重複の可能性:
C#: String.Equals vs. ==
皆さんこんにちは。
文字列を == と比較してはいけないし、string.equals() を使うべきだと誰かが私に言ったことがありますが、それは Java を指しています。
¿ .NET c# での == と string.equals の違いは何ですか?
重複の可能性:
C#: String.Equals vs. ==
皆さんこんにちは。
文字列を == と比較してはいけないし、string.equals() を使うべきだと誰かが私に言ったことがありますが、それは Java を指しています。
¿ .NET c# での == と string.equals の違いは何ですか?
string == string
とまったく同じString.Equals
です。これは正確なコードです (Reflector から):
public static bool operator ==(string a, string b)
{
return Equals(a, b); // Is String.Equals as this method is inside String
}
== 実際には、文字列に対して String.Equals を実行することになります。
String.Equals.... を使用する場合は、StringComparision を指定できます。
例:
MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase)
ほとんどの場合、私はそれをコーディングの好みと考えています。好きな方を使用してください。
C# では演算子として違いはなく、 call する文字列型でオーバーロードされてい==
ます。このMSDN ページを参照してください。!=
equals()
より良い説明については、こちらをご覧ください。1つの答えが述べたように
オブジェクト型で == を使用すると、System.Object.ReferenceEquals に解決されます。
Equals は単なる仮想メソッドであり、そのように動作するため、オーバーライドされたバージョンが使用されます (文字列型の場合は内容が比較されます)。
==
オペレーターがメソッドを呼び出しますString.Equals
。したがって、せいぜいメソッド呼び出しを保存しています。逆コンパイルされたコード:
public static bool operator ==(string a, string b)
{
return string.Equals(a, b);
}
違いはありません。それは単なる演算子のオーバーロードです。文字列の場合、内部的には同じです。ただし、オブジェクトの比較に == を使用する習慣をつけたくないため、文字列にも使用することはお勧めしません。
C# では、文字列に違いはありません。
文字列の大文字と小文字を気にせず、文化的な認識を気にしないのであれば、それは同じです...