1

アプリケーションに非常に長い文字列リテラルがいくつかあります。次のようなメソッドでそれらを定義することは異なりますか?

public string DoSomething()
{
    string LongString = "...";
    // ...
}

またはconstlassのフィールドとして:

private const string LongString = "...";

public string DoSomething()
{
    // ...
}

DoSomething()メソッドは何度も呼び出されますが、LongStringメソッド内で定義すると毎回作成および破棄されますか、それともコンパイラが処理しますか?

4

3 に答える 3

2

文字列リテラルはCLRによってインターンされます。事実上、それらは1回だけ作成されることを意味します。

于 2012-10-29T18:37:24.927 に答える
0

この2つに違いはありません。このメソッドでは、文字列が何度も作成および破棄されることはありません。.NETは文字列インターンを使用するため、個別の文字列リテラルは1回だけ定義されます。

于 2012-10-29T18:37:19.040 に答える
0

最初の例では、関数でのみ使用できます。あなたの2番目では、同じクラスの他の機能で利用できます。

于 2012-10-29T18:33:56.827 に答える