【发布时间】:2016-07-13 06:04:05
【问题描述】:
使用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);
}
但叫法不同
public string Url
{
set
{
//with nameof
RaisePropertyChanged(nameof(Url), this.GetValidationError());
//with expression
RaisePropertyChanged(() => Url, this.GetValidationError());
}
}
您知道每种方法有哪些优点和缺点?还是只有执行速度很重要?我的意思是nameof 将在编译后替换为const 值。
【问题讨论】:
-
我会说这取决于情况。在简单的场景中,nameof 通常可以满足您的需求,而表达式可以用于动态和复杂的查询。
标签: c# .net expression c#-6.0 nameof