0

.net 4.5 に単純なコンソール アプリケーションがあります。

公開授業 プログラム
{
    public static void Main()
    {
        文字列 s1 = "s1";
        文字列 s2 = "s1";

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

これは、文字列インターンのために true になります。ただし、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 に答える