有没有更快的方法将字符串传递给nameof创建的方法?

时间:2016-03-01 22:58:29

标签: c# string

我有一个采用以下参数的方法:

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秒。

1 个答案:

答案 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));