gpt4 book ai didi

C# 使用引用分配变量的分配列表

转载 作者:行者123 更新时间:2023-11-30 22:33:22 25 4
gpt4 key购买 nike

有谁知道可以让我做这样的事情的技巧(其中 Function 是 Func<bool> :

        UnaryNode<bool> compliment = new UnaryNode<bool>()
{ Function = () => !compliment.Right.Value };

以下工作到位,但不是很好。

        UnaryNode<bool> compliment = new UnaryNode<bool>();
compliment.Function = () => !compliment.Right.Value;

最佳答案

这是不允许的,如 langauge specification 中所述.第 7.6.10.2 节:

It is not possible for the object initializer to refer to the newly created object it is initializing.

我也没有发现您的第二个版本有任何不“好”的地方。至于“诡计”,那就更“丑陋”了。您将需要创建一个临时的 throwaway,然后依靠 lambda 关闭变量而不是值。例如,给定:

class Foo
{
public Func<bool> Function;
public Bar Bar;
}

class Bar
{
public bool Value;
}

然后你可以拥有

// DO NOT try this at home
Foo foo = null;
Foo temp = new Foo { Function = () => !foo.Bar.Value };
foo = temp;

bool result1 = foo.Function(); // true
foo.Bar.Value = true;
bool result2 = foo.Function(); // false

这是否比您已有的更“好”?

关于C# 使用引用分配变量的分配列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346903/

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