25

私が知る限り、クラスの静的メンバーは、関連するプリミティブ データ型からもアクセスできますStringInt32したがって、String.Formatは と同じでstring.FormatInt32.MaxValueは と同じint.MaxValueです。

これら2つの形式に違いはありますか?どちらが優先されますか?それらが同一であっても、一般的に読みやすいと見なされますか?

編集:それらは同一であるため、人間の観点からはどちらが好まれますか? 他の人のコードを読んでいるときに、String.Formatまたは見たいですか?string.Format

4

8 に答える 8

43

違いはありません。これらは.NetFrameworkタイプのC#のタイプエイリアスであり、その下で同じメソッドを呼び出しています。

例えば:

  • intのエイリアスですSystem.Int32
  • stringのエイリアスですSystem.String

これらのエイリアスの完全なリストは、MSDNのここにあります

于 2010-10-22T21:10:47.963 に答える
12

これらは、関連するプリミティブデータ型ではありません。これらは、C#で使用できる単なる省略形です。stringエイリアスSystem.StringintエイリアスSystem.Int32。への呼び出しはへint.MaxValue 呼び出しInt32.MaxValueです。C#を使用すると、別のCのような言語を使用している場合と同じように、簡単に入力できます。

于 2010-10-22T21:12:11.987 に答える
8

答えのほとんどは一般的にそれを持っています。ただし、エイリアスが必要な場合があります。頭のてっぺんから:

public enum MyEnum:Byte {...} //will not compile

public enum MyEnum:byte {...} //correct

エイリアスを使用する必要がある場所は他にもいくつかあります。それに加えて、それは主にスタイルです。次の2つのルールが一般的に受け入れられており、おそらく最初のルールは2番目のルールよりも多くなります。

  • 変数またはメンバー型(宣言、パラメーター、キャスト、ジェネリック型クロージャ)を定義するすべての使用法にエイリアス(小文字のキーワード)を使用します
  • 静的コンテキストでの型のすべての使用法(パーサーや文字列操作メソッドなどの静的メソッド、またはMinValue / MaxValueなどの静的プロパティの呼び出し)には、型名(PascalCasedクラス識別子)を使用します。
于 2010-10-22T21:22:20.370 に答える
4

それらは同一です。stringおよびは、それぞれおよびintの構文エイリアスです。StringInt32

于 2010-10-22T21:10:47.230 に答える
3

文字列は基本型ではなく、単に文字列のエイリアスです。それらは同じものです。

于 2010-10-22T21:10:57.030 に答える
3

IDEに移動し、マウスをstringに合わせると、System.Stringによって定義されていることがわかります。

これは「エイリアス」です...あるものは別のものの省略形です。intはInt32のエイリアス、byteはByteのエイリアス、charはCharのエイリアスなどです。

于 2010-10-22T21:13:06.243 に答える
3

それらの互換性を示す興味深い証拠は、IDE 自体です。
入力を開始List<String> list = newしてから、IntelliSense の提案を見てください: List<string>. List<String>選択肢の1つとしてあなたを与えることさえありません。

意見の問題であるあなたの質問の2番目の部分に答えるために、私は多くの理由で大文字よりも好きintですstring

  • 明るい青色はより決定的であり、コードをすばやく読む場合は、クラス名を他の名前と間違えることはありません。
  • SHIFT+キーを押す必要が少ないほど、入力が速くなります
  • IntelliSense は、大文字で開始した場合でも、小文字の名前をオートコンプリートします。そのため、同じ行または同じプロジェクトで同じクラスの大文字と小文字のバージョンを見るのは美的に不快です。
  • intは本質的に非常に単純であり、その名前に大文字と 2 桁の数字 (つまりInt32) が含まれていることを強制的に関連付けさせたくありません。明確な理由もなく具体的​​すぎるように見える

私の同僚は、将来の.NET更新との互換性を具体的に使用Int32して保証すると言いました。String誰がそう言っているのか、私は完全に同意しません。私が間違っていることを証明してください!

于 2010-10-22T21:46:20.333 に答える