私はC#の "string"が参照型であることを知っています。これはMSDNにあります。しかし、このコードは、それがその後、必要として機能しません。C#文字列参照型ですか?
class Test
{
public static void Main()
{
string test = "before passing";
Console.WriteLine(test);
TestI(test);
Console.WriteLine(test);
}
public static void TestI(string test)
{
test = "after passing";
}
}
出力は、私は、パラメータとして文字列を渡すことだし、それが参照型であることので、「通過した後に」「渡す前に」でなければなりません2番目の出力ステートメントは、TestIメソッドで変更されたテキストを認識する必要があります。しかし、「渡す前に」「渡す前に」取得し、refではなく値渡しと思われるようにします。私は文字列が不変であることを理解していますが、ここで何が起こっているのかがわかりません。私は何が欠けていますか?ありがとう。
下記のJonが参照する記事を参照してください。あなたが言及する振る舞いは、C++ポインタによっても再現できます。 – Sesh
[MSDN](http://msdn.microsoft.com/en-us/library/s6938f28.aspx)にも非常に良い説明があります。 –
[C#では、Stringは値型のように動作する参照型はなぜですか?](http://stackoverflow.com/questions/636932/in-c-why-is-string-a-reference-type -refresh-like-a-value-type) – Liam