gpt4 book ai didi

c# - 我可以在同一类的另一个委托(delegate)中访问委托(delegate)吗?

转载 作者:行者123 更新时间:2023-11-30 20:18:03 24 4
gpt4 key购买 nike

我不知道我的理解是否错误,但我正在尝试做如下的事情:

我有一个包含两个委托(delegate)的基类:

 public class Base
{
public Func<bool> Licensed { get; set; }
public Func<bool> Enabled { get; set; }
}

和派生类如下所示:

public class Derived : Base
{
public int Test { get; set; }
}

现在,我正在尝试在 Main():

中实例化派生类
static void Main(string[] args)
{
Derived obj = new Derived()
{
Licensed = () => { return true; },
Enabled = () => { return Licensed() && true; }, //access above delegate
};
}

事情在 Enabled 实现中,我想访问上面分配的许可委托(delegate)。我无法实现这一目标,因为这是不允许的。这可以通过其他方式实现吗?

最佳答案

您不能在对象初始值设定项中引用其他属性。 C# 语言规范 7.6.10.2 对象初始值设定项:

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

但是你可以使用老式的属性赋值:

var obj = new Derived { Licensed = () => true; };
obj.Enabled = () => obj.Licensed() && true;

关于c# - 我可以在同一类的另一个委托(delegate)中访问委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650238/

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