7

重複の可能性:
C#: String.Equals vs. ==

皆さんこんにちは。

文字列を == と比較してはいけないし、string.equals() を使うべきだと誰かが私に言ったことがありますが、それは Java を指しています。

¿ .NET c# での == と string.equals の違いは何ですか?

4

8 に答える 8

19

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
}
于 2011-04-26T20:43:39.277 に答える
3

== 実際には、文字列に対して String.Equals を実行することになります。

String.Equals.... を使用する場合は、StringComparision を指定できます。

例:

MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase)

ほとんどの場合、私はそれをコーディングの好みと考えています。好きな方を使用してください。

于 2011-04-26T20:42:31.470 に答える
3

C# では演算子として違いはなく、 call する文字列型でオーバーロードされてい==ます。このMSDN ページを参照してください。!=equals()

于 2011-04-26T20:40:40.647 に答える
1

より良い説明については、こちらをご覧ください。1つの答えが述べたように

オブジェクト型で == を使用すると、System.Object.ReferenceEquals に解決されます。

Equals は単なる仮想メソッドであり、そのように動作するため、オーバーライドされたバージョンが使用されます (文字列型の場合は内容が比較されます)。

于 2011-04-26T20:42:31.040 に答える
1

==オペレーターがメソッドを呼び出しますString.Equals。したがって、せいぜいメソッド呼び出しを保存しています。逆コンパイルされたコード:

public static bool operator ==(string a, string b)
{
  return string.Equals(a, b);
}
于 2011-04-26T20:40:32.133 に答える
0

違いはありません。それは単なる演算子のオーバーロードです。文字列の場合、内部的には同じです。ただし、オブジェクトの比較に == を使用する習慣をつけたくないため、文字列にも使用することはお勧めしません。

于 2011-04-26T20:41:28.117 に答える
0

C# では、文字列に違いはありません。

于 2011-04-26T20:42:05.580 に答える
0

文字列の大文字と小文字を気にせず、文化的な認識を気にしないのであれば、それは同じです...

于 2011-04-26T20:42:14.787 に答える