美好的一天.我在TreeView中有递归遍历TreeNode的方法:
public void ShowTree(TreeView tree)
{
foreach (TreeNode node in tree.Nodes)
{
ShowNode(node);
}
}
private void ShowNode(TreeNode node)
{
MessageBox.Show(node.ToString());
foreach (TreeNode child in node.Nodes)
{
ShowNode(child);
}
}
Run Code Online (Sandbox Code Playgroud)
但我必须有多余的方法"ShowNode",这在其他任何地方都没有使用.如何制作这种匿名方法并合并这两种方法?
如何获得子列表
[1]; [1; 2]; [1; 2; 3]; ...; [1; 2; 3; ...; n]
Run Code Online (Sandbox Code Playgroud)
从清单
[1; 2; 3; ...; n]
Run Code Online (Sandbox Code Playgroud)
以最惯用的方式?我所能做的就是:
List.scan (fun acc elem -> elem::acc) [] [1;2;3;4;5]
> val it : int list list =
[[]; [1]; [2; 1]; [3; 2; 1]; [4; 3; 2; 1]; [5; 4; 3; 2; 1]]
Run Code Online (Sandbox Code Playgroud)
谢谢。
再会!我刚刚开始学习WPF。有标准的功能来构建像下面这样的 UI 吗?在 WinForms 中,必须为此创建复杂的自定义控件:

在 WPF 中可以使用什么方法?
美好的一天.泛型通常使用如下:
class MyList<T>
{
public T data;
public MyList<T> nextElement;
}
Run Code Online (Sandbox Code Playgroud)
为什么不使用以下:
class MyList
{
public object data;
public MyList nextElement;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
class MyStructure<T> where T : SomeCommonClass
{
public T data;
public MyStructure<T> nextElement;
public MyStructure<T> prevElement;
}
Run Code Online (Sandbox Code Playgroud)
而是:
class MyStructure
{
public SomeCommonClass data;
public MyStructure nextElement;
public MyStructure prevElement;
}
Run Code Online (Sandbox Code Playgroud)
更新:
好吧,我担心你没有完全理解我,甚至降低了我的问题.没有泛型的示例,它正常工作:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MyNode nodeButton = new MyNode("nodeButton", …Run Code Online (Sandbox Code Playgroud) type myClass(property1 : Map<int, string>) =
member val Property1 = property1 with get, set
let myObject = myClass(Map.ofList [(1, "one"); (2, "two"); (3, "three")])
Run Code Online (Sandbox Code Playgroud)
我理解正确,为了向属性集合添加元素,我们应该写
myObject.Property1 <- myObject.Property1.Add (5, "five")
Run Code Online (Sandbox Code Playgroud)
代替
myObject.Property1.Add (5, "five")
Run Code Online (Sandbox Code Playgroud)
?没有更简洁的语法?谢谢.
c# ×3
f# ×2
generics ×1
inheritance ×1
linked-list ×1
list ×1
recursion ×1
tree ×1
treeview ×1
wpf ×1
wpf-controls ×1