var の初期化ではなく、var について混乱しています。
var x=10;
x=12;
C# でのこれらの初期化の違いは何ですか?
私は var がキーワードであり、次のような方法で使用されることを知っていました。
LINQ クエリ (最初に var を使用する理由) など、型を記述するのが複雑な場合は、var を使用します。
ありがとう、
シヴァ
var の初期化ではなく、var について混乱しています。
var x=10;
x=12;
C# でのこれらの初期化の違いは何ですか?
私は var がキーワードであり、次のような方法で使用されることを知っていました。
LINQ クエリ (最初に var を使用する理由) など、型を記述するのが複雑な場合は、var を使用します。
ありがとう、
シヴァ
最初のものは、ローカル変数を宣言してx
割り当てるために使用されます。宣言された新しい変数は、 の右側の (強力で非動的な) 型を自動的に取得します=
。それはint
あなたの例のタイプです。
2 番目のものは、他の場所で既に宣言されている変数またはプロパティに (のみ) 割り当てるために使用されます。
これはコンパイルします。
var x=10;
これは、このシナリオで x を初期化しようとしているとは想定していません。
x=12;
次のようにする必要があります。
int x = 12;
var x=12;
では、何もないのと何が違うのでしょうint x = 12;
。どちらもコンパイル時に解決されます。
var
キーワードを使用するには、コンパイルする等号 (=) の右側に型を持つ式が必要です。
var myNumber = 1;
var は型として int にコンパイルされるため、機能します。 myNumber = 1
myNumber が宣言されていないため、機能しません。等号の右側に何もない変数を宣言する場合は、型を明示的に指定する必要がありますint myNumber
。
個人的には、何にコンパイルされるかが明らかな場合にのみ var を使用します...
var myNumber = 1;
var name = "some name";
var lst = List<int>();
あまり目立たない...
var data = GetData();
確かに、メソッドにアクセスして戻り値を確認できますが、他の開発者にとっては読みにくい場合があります。
変数
C# 3.0で導入されました
1 ) var declarations are resolved at compile-time.
2) Errors are caught at compile time.
どのタイプを扱っているのかわからない場合はvar
、それが定義されている割り当ての右側からタイプを取得することをお勧めします。
var x =10;
x=12;
最初のケースでは、コンパイラは実行時に宣言を解決しました
あなたがやったと仮定しましょう
var x=10;
x="I am String";
x
コンパイラは、値 10 が割り当てられたときに System.Int32であると既に判断しているため、エラーがスローされます。文字列値を代入すると、タイプ セーフに違反するようになりました
利点
var
c# 3 匿名型およびジェネリックと組み合わせると便利です。匿名型は依然として clr 型ですが、コーディング時に型名を使用することはできません。
ただし、読みやすくするために命名規則を使用することをお勧めします