0

我在 .net 4.5 中有一个简单的控制台应用程序。

公开课程序
{
    公共静态无效 Main()
    {
        字符串 s1 = "s1";
        字符串 s2 = "s1";

        Console.WriteLine(ReferenceEquals(s1, s2));
    }
}

由于字符串实习,这是真的。但是,当我将 CompilationRelaxations 属性添加到 AssemblyInfo 文件时,我仍然看到输出为 true。

[程序集:CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

即使将属性添加到我的 Program 类似乎也不会改变输出。[CompilationRelaxations(CompilationRelaxations.NoStringInterning)]

将其更改为 .net 4.0 应用程序也没有任何效果。

我错过了什么?

4

1 回答 1

1

这是文档中的引用:

将程序集标记为不需要字符串文字实习。

它不会阻止编译器进行字符串实习,只是提供一个不需要它的提示。在 MSDN 和 CLI 规范中,它的文档都很差。另请参阅此MSDN 论坛帖子

于 2013-04-03T03:18:08.983 回答