可以直接为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:我想这是为那些不知道你写的是伪代码的人准备的;)