変数型を定義するときに二重宣言が必要なのはなぜですか?

T.トドゥア

私はC#の初心者ですが、現時点で理解できないことの1つは、型を2回記述する必要がある理由です。

Dictionary<string, string> Lines = new Dictionary<string, string>();

次のように、これ以上簡単にできない理由:

Lines= new Dictionary<string, string>();
// or
Dictionary<string, string> Lines = ();

それは「Lines」変数についてすべてを言っているのではありませんか?それははるかに簡単だったかもしれません。

デビッド

これはメソッド内のコードであれば、なぜ、これはあるキーワードはC#3.0から存在しています:var

var Lines = new Dictionary<string, string>();

これがクラス宣言にある場合、varキーワードは使用できませんクラスレベルで暗黙の入力が許可されない理由の詳細がわからないことは認めますが、許可されていないと言えば十分です。明示的な入力が必要です。

private Dictionary<string, string> Lines;

その宣言とは完全に別のものは、その変数の初期化です。これ、同じ行、コンストラクター、メソッドなどで実行できます。ただし、newキーワード自体は、次のタイプを明示的に指定する必要があります。

new Dictionary<string, string>()

これらは2つのまったく異なるものであり、どちらも独自の個別の非常に正当な理由でタイプを指定する必要があります。

最終的に、「なぜ言語はこれを行わないのですか?」と尋ねるときはいつでも。あなたが本当に尋ねるべきことは、「言語はこれを行うべきですか?それは本当に必要ですか?」です。

Eric Lippertが前の質問で言ったように、「[その不要な機能]を排除することで、[その不要な機能]のルールを検討、議論、設計、指定、実装、テスト、文書化する必要はありませんでした。顧客に出荷されるか、C#の将来のすべての機能と互換性があります。」

観覧席から叫ぶのは簡単です。主要なプログラミング言語の設計とサポートはそれほど簡単ではありません。たぶんいつかこの機能が存在するでしょう、そしてあなたはそれをチームに提案することを歓迎します。しかし、「なぜそれが存在しないのか」に関しては、チームは単にそれを実現させませんでした。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

シェルスクリプトでこの変数を定義するときに二重引用符が必要なのはなぜですか?

分類Dev

mainからメソッドに渡す変数を二重に定義する必要があるのはなぜですか?

分類Dev

reverse_iteratorがネストされた型を二重に定義するのはなぜですか?

分類Dev

なぜ私は二回、変数のデータ型を宣言することができますか?

分類Dev

これらの「エクスポートされた」変数が二重に定義されているのはなぜですか?

分類Dev

この関数パラメーターがタプルに二重中括弧を必要とするのはなぜですか?

分類Dev

Join()が1次元のLong配列の二重転置を必要とするのはなぜですか?

分類Dev

関数の定義と宣言に異なるシグネチャを使用できるのはなぜですか?

分類Dev

検出イディオムを使用すると、コンパイラが二重定義を要求しないのはなぜですか?

分類Dev

Mapの+演算子に二重括弧が必要なのはなぜですか?

分類Dev

複数のパラメータを含む変数を二重引用符で囲むことができないのはなぜですか?

分類Dev

GraphQLクエリに名前を付けるときに変数を定義する必要があるのはなぜですか?

分類Dev

変数を任意のUnicode文字で直接宣言できるのに、PythonでUnicode型が必要なのはなぜですか?

分類Dev

変数の型がわからないときに変数を宣言する必要がある場合はどうすればよいですか?

分類Dev

PATH変数を定義したときに--with-boostオプションを使用する必要があるのはなぜですか

分類Dev

「for」ループで定義された「const」変数ではなく、通常の「const」変数の型を指定する必要があるのはなぜですか?

分類Dev

このjavascript関数に二重中括弧が必要なのはなぜですか?

分類Dev

コンパイラが宣言型マクロに二重括弧を自動的に追加しないのはなぜですか?

分類Dev

かっこ "] ["がシェルによる解釈を防ぐために二重エスケープ "\\"を必要とするのはなぜですか?

分類Dev

変数がすでに型を定義しているのに、なぜ型キャストが必要なのですか?

分類Dev

一部の整数の(floatおよびintに戻る)二重変換が元の数と等しくないのはなぜですか?

分類Dev

ポインタを使用してユーザー定義構造を初期化するときに、型キャストが必要なのはなぜですか?

分類Dev

C ++オーバーロードと参照関数を定義するときに、各関数に参照修飾子が必要なのはなぜですか

分類Dev

php mail()が一重引用符と二重引用符をhtml特殊文字に変換するのはなぜですか

分類Dev

列挙型変数を宣言する必要があるのはなぜですか?(C)

分類Dev

その型を使用する前に、無関係なstruct file_handle変数を宣言する必要があるのはなぜですか?

分類Dev

before_actionを使用するときに二重レンダリングがないのはなぜですか?

分類Dev

Javaができるのに、Scalaが宣言されていないが未定義の変数を作成できないのはなぜですか?

分類Dev

未設定の空の変数が二重括弧で数値的にゼロに等しいのはなぜですか

Related 関連記事

  1. 1

    シェルスクリプトでこの変数を定義するときに二重引用符が必要なのはなぜですか?

  2. 2

    mainからメソッドに渡す変数を二重に定義する必要があるのはなぜですか?

  3. 3

    reverse_iteratorがネストされた型を二重に定義するのはなぜですか?

  4. 4

    なぜ私は二回、変数のデータ型を宣言することができますか?

  5. 5

    これらの「エクスポートされた」変数が二重に定義されているのはなぜですか?

  6. 6

    この関数パラメーターがタプルに二重中括弧を必要とするのはなぜですか?

  7. 7

    Join()が1次元のLong配列の二重転置を必要とするのはなぜですか?

  8. 8

    関数の定義と宣言に異なるシグネチャを使用できるのはなぜですか?

  9. 9

    検出イディオムを使用すると、コンパイラが二重定義を要求しないのはなぜですか?

  10. 10

    Mapの+演算子に二重括弧が必要なのはなぜですか?

  11. 11

    複数のパラメータを含む変数を二重引用符で囲むことができないのはなぜですか?

  12. 12

    GraphQLクエリに名前を付けるときに変数を定義する必要があるのはなぜですか?

  13. 13

    変数を任意のUnicode文字で直接宣言できるのに、PythonでUnicode型が必要なのはなぜですか?

  14. 14

    変数の型がわからないときに変数を宣言する必要がある場合はどうすればよいですか?

  15. 15

    PATH変数を定義したときに--with-boostオプションを使用する必要があるのはなぜですか

  16. 16

    「for」ループで定義された「const」変数ではなく、通常の「const」変数の型を指定する必要があるのはなぜですか?

  17. 17

    このjavascript関数に二重中括弧が必要なのはなぜですか?

  18. 18

    コンパイラが宣言型マクロに二重括弧を自動的に追加しないのはなぜですか?

  19. 19

    かっこ "] ["がシェルによる解釈を防ぐために二重エスケープ "\\"を必要とするのはなぜですか?

  20. 20

    変数がすでに型を定義しているのに、なぜ型キャストが必要なのですか?

  21. 21

    一部の整数の(floatおよびintに戻る)二重変換が元の数と等しくないのはなぜですか?

  22. 22

    ポインタを使用してユーザー定義構造を初期化するときに、型キャストが必要なのはなぜですか?

  23. 23

    C ++オーバーロードと参照関数を定義するときに、各関数に参照修飾子が必要なのはなぜですか

  24. 24

    php mail()が一重引用符と二重引用符をhtml特殊文字に変換するのはなぜですか

  25. 25

    列挙型変数を宣言する必要があるのはなぜですか?(C)

  26. 26

    その型を使用する前に、無関係なstruct file_handle変数を宣言する必要があるのはなぜですか?

  27. 27

    before_actionを使用するときに二重レンダリングがないのはなぜですか?

  28. 28

    Javaができるのに、Scalaが宣言されていないが未定義の変数を作成できないのはなぜですか?

  29. 29

    未設定の空の変数が二重括弧で数値的にゼロに等しいのはなぜですか

ホットタグ

アーカイブ