gpt4 book ai didi

c# - 表达式与 nameof

转载 作者:太空狗 更新时间:2023-10-29 20:51:14 26 4
gpt4 key购买 nike

expressions 上使用 nameof 来提取属性名称是个好主意吗?

//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(Url) 在编译时确定。它花费 0 毫秒。事后评价。当您可以使用 nameof 时,构建表达式既昂贵又毫无意义。

所以底线是:不要使用表达式,除非你真的必须这样做(你已经在表达式中工作,你必须从那里开始)。否则使用nameof

关于c# - 表达式与 nameof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38324208/

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