c# - C# 编译器会通过将 var 转换为 const 来优化此代码吗?

标签 c# .net

假设我有这个功能:

public string GenerateHash(string[] values)
{
    var secureSecret = "a secret string";  //<-- this can/should be const

    var str = new StringBuilder(secureSecret);
    foreach (var value in values) {
        str.Append(value);
    }

    return GenerateMd5Hash(str.ToString());
}

显然上面的 secureSecret 可以是 const,我应该费心把它改成 const 还是编译器足够聪明,知道这个?

最佳答案

如果查看生成的 IL,您会发现编译器没有创建新字符串,它只是调用 ldstr :

IL_0001:  ldstr       "a secret string"

编译器足够聪明,可以将这个常量字符串“烘焙”到您正在创建的生成的 DLL/可执行文件中。

话虽如此,使用 const 传达了作者的意图,并增加了代码的清晰度并增强了 IMO 的可维护性。它稍后将允许您更轻松地重构这些“神奇”字符串,而不是将它们散布在代码库中的各处。

关于c# - C# 编译器会通过将 var 转换为 const 来优化此代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701572/

相关文章:

c# - inproc 和 outproc 的区别

c# - 一个进程中加载​​的最大应用域数

.net - Azure AD 登录错误

c# - 异步日志记录抛出 NullReferenceException

c# - 如何从单独的进程监视应用程序崩溃

c# - EF Core EnsureDeleted 抛出 "failed to login with user ' sa'"

c# - 在 C# 中转换时区之间的时间

.net - 构建通用实用程序库的最佳方法是什么?

c# - 关于 AlphaBeta 算法

c# - 如何将谓词定义为函数参数