isx*_*ker 6 .net c# expression c#-6.0 nameof
它是用一个好主意,nameof在expressions提取属性的名称?
//method with expression
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression, bool isValid, [param: Localizable(true)] string validationError)
{
string propertyName = PropertySupport.ExtractPropertyName(propertyExpression);
RaisePropertyChanged(propertyName, isValid, validationError);
}
//the same logic without expression
protected void RaisePropertyChanged(string propertyName, [param: Localizable(true)] string validationError)
{
RaisePropertyChanged(propertyName, validationError == null, validationError);
}
Run Code Online (Sandbox Code Playgroud)
但呼唤是不同的
public string Url
{
set
{
//with nameof
RaisePropertyChanged(nameof(Url), this.GetValidationError());
//with expression
RaisePropertyChanged(() => Url, this.GetValidationError());
}
}
Run Code Online (Sandbox Code Playgroud)
你知道每种方法有哪些优点和缺点?或者只有执行速度很重要?我的意思nameof是const在编译后将替换为值.
Pat*_*man 12
为什么要使用表达式来执行编译时可以执行的操作?nameof(Url)在编译时确定.它花费0毫秒.之后评估.当你可以使用时,构建表达式是昂贵且毫无意义的nameof.
所以底线是:不要使用表达式,除非你真的必须(你已经在表达式中工作,你必须从那里开始).否则使用nameof.
| 归档时间: |
|
| 查看次数: |
1415 次 |
| 最近记录: |