3

私はそれらの違いは何であり、それらを使用する可能な方法は何ですか知りたいのですが


  • ええ、あなたはこれらをトリップします' - RPM1984

5 답변


21

全く違いはありません。 ILレベルでさえありません。 C#ではstring実際の別名です。System.String.NETタイプ用途としては、アプリケーションで空の文字列を表したい場合はいつでも使用できます。両者の違いは何かについて多くの議論がありました。string.Emptyそして""そして一般的なコンセンサスは、自分に最適なものを使用し、コードを読みやすくするということです。これは明らかに主観的なものです。


  • var s2 = String.Emptyは"システム"のインポートステートメントを必要とします。 var s2 = string.Emptyは違います。なぜそれに言及しているのかわからない、=) - RPM1984
  • 悪い質問に対する良い答えは、ああ、+ 1です。 - RPM1984
  • 私は、文字列name = string.Emptyと保護された文字列_PK_ID = Stringを使用してpplを見ました。なぜ彼らはこれを使用しているのか.....コードを読みやすくするためだけに........... - user
  • @ RPM1984、stringのエイリアスですSystem.String。インポートが必要なのはそのためです。コンパイラによって発行されたILにはまだ違いはありません。 - Darin Dimitrov
  • 以前は、String.Emptyへの参照を使用する方が、""を使用して空の文字列を多数作成するよりも優れていました。空の文字列を"で作成するたびに、その文字列にメモリが割り当てられ、String.Emptyには既に割り当てられています。しかし、最近ではC#コンパイラが自動的に文字列のインターナリングを実行するので、それほど悪くはありません。私はまだ魔法の文字列よりも名前付き定数の使用を好む - だから私はいつもString.Emptyに行く。 - Tim Roberts

2

変わりはない。stringのエイリアスですSystem.String


  • stringは、mscorlibのSystem.Stringのエイリアスです。 System.Stringをアセンブリに定義できますが、文字列は変わりません。 - gandjustas

1

No difference, it’s just predefine text or name for compiler.

string =String (class)
int =Int32 (struct)
long= Int64 (struct)
decimal = Decimal (struct)

コンパイラはStringクラスとして解釈し、その他は適切な構造として解釈します。


0

ただFUI: エイリアスには1つの違いがあります。たとえば、Int32とintです。

あなたが書くことができます:

enum A : int
{
}

しかし、あなたは書くことができません:

enum A : Int32
{
}


-1

私の知る限りでは、違いはありません。少なくとも、結果に違いはありません。

You may use it like this:

string mystring = "blah";

mystring = string.Empty;

または

String mystring = "blah";

mystring = String.Empty;


  • あなたの下落投票を説明する気に! - anon271334

リンクされた質問


関連する質問

最近の質問