私の理解では、リテラルは自動的に干渉します。以下のコード例を見てみましょう。
string s = "x" + "y" + "z";
Console.WriteLine(String.IsInterned(s) ?? "Not Interned");
string ss = new string(new char[] { 'x', 'y', 'z' });
Console.WriteLine(String.IsInterned(ss) ?? "Not Interned");
string sss = new string(new char[] { 'a', 'b', 'c' });
Console.WriteLine(String.IsInterned(sss) ?? "Not Interned");
次のように出力します。
xyzxyz
インターン
されていません
したがって、以下のコード例から、文字列sおよびssは、リテラルが自動的にインターンされることを証明します。文字列sssに同じことが当てはまらない理由がわかりません。