このコードスニペットは、深さのC#からのものです
static bool AreReferencesEqual<T>(T first, T second)
where T : class
{
return first == second;
}
static void Main()
{
string name = "Jon";
string intro1 = "My name is " + name;
string intro2 = "My name is " + name;
Console.WriteLine(intro1 == intro2);
Console.WriteLine(AreReferencesEqual(intro1, intro2));
}
上記のコードスニペットの出力は次のとおりです。
True
False
mainメソッドがに変更されたとき
static void Main()
{
string intro1 = "My name is Jon";
string intro2 = "My name is Jon";
Console.WriteLine(intro1 == intro2);
Console.WriteLine(AreReferencesEqual(intro1, intro2));
}
上記のコードスニペットの出力は次のとおりです。
True
True
なぜ理解できないのですか?
編集:文字列インターンを理解したら、次の質問は当てはまりません。
AreReferencesEqual
2番目のコードスニペット
のジェネリックメソッドでパラメーターはどのように受け取られますか?
==演算子がString型のオーバーロードされたEqualsメソッドを呼び出さないように連結すると、文字列型はどう変わりますか?