C# にはString
オブジェクトとstring
オブジェクトがあります。
2つの違いは何ですか?どちらを使用するかに関するベストプラクティスは何ですか?
C# にはString
オブジェクトとstring
オブジェクトがあります。
2つの違いは何ですか?どちらを使用するかに関するベストプラクティスは何ですか?
違いはありません。string (小文字) は、System.String の単なるエイリアスです。
変わりはない。System.String
と厳密に同一ですstring
。一般的な C# コーディング ガイドラインでは、キーワード を使用する必要があることが示されていますstring
。
それらはエイリアスであり、交換可能です。ただし、スタイル的には、宣言には小文字の文字列を使用し、静的メソッドには String を使用します。
string foo = "bar";
if( foo != String.Empty )
{
Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
1 つは System.String の .Net タイプで、もう 1 つは C# 固有のもので、System.String へのエイリアスであることが判明しています。
http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx
違いはありません。string は、コンパイラが System.String に変換するエイリアスです。
実際、MSIL ではエイリアス化されています。
.method private hidebysig static void Main(string[] args) cil managed
将来的には、両方を使用するアプリをコンパイルしてから、Reflector(言語をILに変更)を使用してコンパイルされた出力を表示してみてください。違いはありません。
それらの間に違いはありません。string は、System.String の単なるエイリアスです。コンパイルすると、両方とも System.String オブジェクトにコンパイルされます。
小文字バージョンは、実際のクラス String への単なるエイリアスです。IL が生成される限り、実際の違いはありません。
違いはありません。string は、クラス System.String を参照する C# 言語のキーワードです。int が System.Int32 を参照するキーワードであるのと同様です。
一部の言語では 16 ビット/32 ビット システムに応じて「int」が異なることを考慮すると、「文字列」は将来、System.String と同じではなくなる可能性があります。
しかし、今のところそうです。
ちょっとした注意: string/String だけがエイリアスのペアではありません。Integer、Int32、int はすべてエイリアスです。
@mliesen: C# では発生しません。C とは異なります。
string はコンパイラによって System.String に変換されるため、違いはありません。すべての一般的な型と同じです (int は System.Int32 などになります)。目立つようにシンプルな名前を使用しています。