有没有一种更快的方法可以将字符串传递到由 nameof 创建的方法中

本文关键字:方法 字符串 创建 nameof 一种 有没有 | 更新日期: 2023-09-27 18:37:01

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

public static void IfNull(object value, string variableName)
{
    if (value == null)
    {
        throw new ArgumentNullException("Cannot be empty", variableName);
    }
}

我的应用程序多次调用此方法。下面是它如何调用的示例:

Throw.IfNull(someObject, nameof(someObject));

我的问题是,有没有更快的方法来传递 nameof() 返回的字符串?当我不包括第二个参数时,我看到了更大的性能改进。我看到软件中最重要的功能之一的改进为 .5 秒,而不是如果我保持代码原样,则改进了 .3 秒。

有没有一种更快的方法可以将字符串传递到由 nameof 创建的方法中

参数

变量 Name 的值是在调用 IfNull 之前计算的,无论是否使用此值。如果计算是繁重的操作,您可以传递一个函数,该函数将仅在必要时返回参数值:

public static void IfNull(object value, Func<string> variableName)
{
    if (value == null)
    {
        throw new ArgumentNullException("Cannot be empty", variableName());
    }
}

并这样称呼它:

Throw.IfNull(someObject, () => nameof(someObject));