Kon*_*rin 3 c# anonymous-types
有没有办法创建引用自身实例的匿名类型?
var root = new { Name = "Root", Parent = ??? };
var child = new { Name = "Child", Parent = root };
var childOfChild = new { Name = "Grand child", Parent = child };
Run Code Online (Sandbox Code Playgroud)
例如,我们可以自己引用委托:
Action run = null;
run = () => run();
Run Code Online (Sandbox Code Playgroud)
另一个例子,我们可以创建匿名类型的通用堆栈:
static Stack<T> CreateStack<T>(params T[] values)
{
var stack = new Stack<T>();
foreach (var value in values)
stack.Add(value);
return stack;
}
Run Code Online (Sandbox Code Playgroud)
你能想到从自己引用匿名类型的任何方法吗?
C#中的匿名类型是不可变的.因此,所有字段值必须在创建对象之前存在,并且永远不会更改.因此,在C#中直接循环引用匿名类型是不可能的.
VB中的匿名类型是可变的; 你可能想出一些在VB中做的方法.
可能有一种方法可以使匿名类型间接引用自身,例如,包含一个委托,该委托在被调用时返回匿名类型的实例.我没有看到任何方法轻易做到这一点,但我也没有看到证明这样做是不可能的.仔细考虑一下,看看你想出了什么!
我认为这个问题仅用于娱乐目的.如果你想制作一个圆形参考物体,请做一个名义上的类型.
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |