37

C# にはStringオブジェクトとstringオブジェクトがあります。

2つの違いは何ですか?どちらを使用するかに関するベストプラクティスは何ですか?

4

12 に答える 12

34

違いはありません。string (小文字) は、System.String の単なるエイリアスです。

于 2008-09-22T18:15:55.757 に答える
16

変わりはない。System.Stringと厳密に同一ですstring。一般的な C# コーディング ガイドラインでは、キーワード を使用する必要があることが示されていますstring

于 2008-09-22T18:17:25.423 に答える
11

それらはエイリアスであり、交換可能です。ただし、スタイル的には、宣言には小文字の文字列を使用し、静的メソッドには String を使用します。

string foo = "bar";

if( foo != String.Empty )
{
   Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
于 2008-09-22T18:16:59.777 に答える
4

1 つは System.String の .Net タイプで、もう 1 つは C# 固有のもので、System.String へのエイリアスであることが判明しています。

http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx

于 2008-09-22T18:17:39.183 に答える
3

違いはありません。string は、コンパイラが System.String に変換するエイリアスです。

実際、MSIL ではエイリアス化されています。

.method private hidebysig static void  Main(string[] args) cil managed
于 2008-09-22T18:16:06.003 に答える
2

将来的には、両方を使用するアプリをコンパイルしてから、Reflector(言語をILに変更)を使用してコンパイルされた出力を表示してみてください。違いはありません。

于 2008-09-22T19:09:39.840 に答える
2

それらの間に違いはありません。string は、System.String の単なるエイリアスです。コンパイルすると、両方とも System.String オブジェクトにコンパイルされます。

于 2008-09-22T18:16:10.560 に答える
2

小文字バージョンは、実際のクラス String への単なるエイリアスです。IL が生成される限り、実際の違いはありません。

于 2008-09-22T18:16:19.093 に答える
2

違いはありません。string は、クラス System.String を参照する C# 言語のキーワードです。int が System.Int32 を参照するキーワードであるのと同様です。

于 2008-09-22T18:17:46.953 に答える
1

一部の言語では 16 ビット/32 ビット システムに応じて「int」が異なることを考慮すると、「文字列」は将来、System.String と同じではなくなる可能性があります。

しかし、今のところそうです。

于 2008-09-22T20:39:35.550 に答える
1

ちょっとした注意: string/String だけがエイリアスのペアではありません。Integer、Int32、int はすべてエイリアスです。

@mliesen: C# では発生しません。C とは異なります。

于 2008-09-22T20:48:07.277 に答える
1

string はコンパイラによって System.String に変換されるため、違いはありません。すべての一般的な型と同じです (int は System.Int32 などになります)。目立つようにシンプルな名前を使用しています。

于 2008-09-22T18:17:15.317 に答える