3

重複の可能性:
C# 文字列参照型?

たとえば、私はという文字列を持っています

string sample = "Initial value";

メソッド test() に渡した後

public static void Test(string testString)
{
    testString = "Modified Value";
}

テスト(サンプル)に合格した後に「サンプル」を出力すると、「変更された値」を出力する必要があります。

しかし、その印刷「初期値」。文字列が参照型の場合、なぜそうなるのでしょうか?

しかし、同じ(予想されるロジック)、オブジェクトに対して機能します。誰かが私をクリアしてもらえますか?

4

2 に答える 2

6

stringこれは、参照型であることとは関係ありません。これは、パラメータが参照ではなく値で渡されるためです。

メソッドを次のように変更して、パラメーターが参照渡しされるようにすると、次のようになります。

public static void Test(ref string testString)
{
    testString = "Modified Value";
}

その後sample、修正されます。

パラメーターの受け渡しの詳細については、この記事を参照してください。

于 2012-09-04T09:09:43.957 に答える
2

これは、CLR が params を method に渡す方法によるものです。

簡単に言えば:

string sample = "Initial value";  

ここで変数は、ヒープに格納された文字列インスタンス sampleを指します。"Initial value"

public static void Test(string testString) 
{ 
    testString = "Modified Value"; 
}

メソッドでは、testString変数(変数のコピーsample)を変更して、ヒープ内の「変更された値」文字列を参照し、元のsample変数に影響を与えません。

于 2012-09-04T09:12:18.313 に答える