可以直接为C#属性分配访问器吗?

可以直接为C#属性分配访问器吗?,c#,delegates,properties,C#,Delegates,Properties,而不是像这样: Func<bool> func; bool Property { get {return func();} } Property.get = () => booleanReturningExpression; 这是可能的,或者你能让我更接近那个假语法吗?不,在纯C语言中,这样的事情是不可能的。您可以使用字段或(只读)属性: public Func<bool> PropertyGet; public Func PropertyGet;

而不是像这样:

Func<bool> func;

bool Property {
    get {return func();}
}
Property.get = () => booleanReturningExpression;

这是可能的,或者你能让我更接近那个假语法吗?

不,在纯C语言中,这样的事情是不可能的。您可以使用字段或(
只读
)属性:

public Func<bool> PropertyGet;
public Func PropertyGet;
分配给它,但这不是一个很好的解决方案。如果您需要此功能来完成语法以外的任何事情,您可以从属性委派:

protected Func<bool> PropertyGet;

public bool Property {
    get { return this.PropertyGet(); }
}
protectedfunc PropertyGet;
公共布尔财产{
获取{返回this.PropertyGet();}
}

你可以设置得非常相似。或者,如果确实需要
Property.get
并在自定义
Property
类上设置默认方法,则可以模拟委托。(我不知道这在C#中是否可能,但在VB.NET中是可能的。)

不,在纯C#中不可能这样。您可以使用字段或(
只读
)属性:

public Func<bool> PropertyGet;
public Func PropertyGet;
分配给它,但这不是一个很好的解决方案。如果您需要此功能来完成语法以外的任何事情,您可以从属性委派:

protected Func<bool> PropertyGet;

public bool Property {
    get { return this.PropertyGet(); }
}
protectedfunc PropertyGet;
公共布尔财产{
获取{返回this.PropertyGet();}
}

你可以设置得非常相似。或者,如果确实需要
Property.get
并在自定义
Property
类上设置默认方法,则可以模拟委托。(我不知道这在C#中是否可行,但在VB.NET中是可行的。)

将委托命名为“委托”是个坏主意;它太容易与System.Delegate混淆。如果问题仅限于语法可用性,您可能需要查看.NET的面向方面编程选项。也许可以使用AOP引擎解释的属性来装饰您的属性,该属性可以为您重写代码。@Eric我之所以给它命名,是因为我不喜欢一行看两个黑色单词。其他人。我认为批评伪代码的大拇指是没有根据的,但还有一个大拇指是无意中说服我学习如何使用Func-P@Jessy:我想这是为那些不知道你写的是伪代码的人准备的;)将代表命名为“代表”是个坏主意;它太容易与System.Delegate混淆。如果问题仅限于语法可用性,您可能需要查看.NET的面向方面编程选项。也许可以使用AOP引擎解释的属性来装饰您的属性,该属性可以为您重写代码。@Eric我之所以给它命名,是因为我不喜欢一行看两个黑色单词。其他人。我认为批评伪代码的大拇指是没有根据的,但还有一个大拇指是无意中说服我学习如何使用Func-P@Jessy:我想这是为那些不知道你写的是伪代码的人准备的;)