gpt4 book ai didi

c# - 创建分层匿名类型

转载 作者:行者123 更新时间:2023-11-30 13:42:19 24 4
gpt4 key购买 nike

有什么方法可以创建引用自身实例的匿名类型吗?

var root = new { Name = "Root", Parent = ??? };
var child = new { Name = "Child", Parent = root };
var childOfChild = new { Name = "Grand child", Parent = child };

例如,我们可以从自身引用委托(delegate):

Action run = null;
run = () => run();

另一个例子,我们可以创建匿名类型的泛型堆栈:

static Stack<T> CreateStack<T>(params T[] values)
{
var stack = new Stack<T>();

foreach (var value in values)
stack.Add(value);

return stack;
}

你能想出任何方法从自身引用匿名类型吗?

最佳答案

C# 中的匿名类型是不可变的。因此,它们的所有字段值必须对象创建之前就已经存在,并且永远不会改变。因此,在 C# 中不可能有直接循环引用匿名类型。

VB 中的匿名类型是可变的;您可能会想出一些在 VB 中执行此操作的方法。

可能有一种方法可以使匿名类型间接引用自身,例如,包含一个委托(delegate),该委托(delegate)在被调用时返回匿名类型的实例。我看不出有什么办法可以轻松做到这一点,但我也没有看到证明这样做是不可能的证据。想一想,看看你会想到什么!

我假设这个问题仅供娱乐。如果要制作循环引用对象,请制作标称类型。

关于c# - 创建分层匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com