我有一个采用以下参数的方法:
public static void IfNull(object value, string variableName)
{
if (value == null)
{
throw new ArgumentNullException("Cannot be empty", variableName);
}
}
我的应用程序多次调用此方法。这是一个如何调用它的例子:
Throw.IfNull(someObject, nameof(someObject));
我的问题是,是否有更快的方法来传递nameof()返回的字符串?当我不包含第二个参数时,我看到了更大的性能提升。对于软件中最重要的功能之一,我看到了0.5秒的改进,而不是如果我按照原样保留代码,则改进.3秒。
答案 0 :(得分:0)
在调用IfNull之前计算参数variableName的值,无论是否使用此值。如果计算操作繁重,您可以传递一个仅在必要时返回参数值的函数:
public static void IfNull(object value, Func<string> variableName)
{
if (value == null)
{
throw new ArgumentNullException("Cannot be empty", variableName());
}
}
然后这样称呼:
Throw.IfNull(someObject, () => nameof(someObject));