C#VARタイプ
2290 ワード
メソッド範囲で宣言される変数は、暗黙的なタイプvarを有することができる.暗黙的なタイプのローカル変数は、強いタイプ変数です(タイプを宣言したように)が、コンパイラによってタイプが決定されます.次の2つのi宣言は、機能的に同等です.
var i = 10; // implicitly typed
int i = 10; //explicitly typed
varの使用が多すぎると、ソースコードの可読性が他人の目に悪くなる可能性があります.必要に応じてvarを使用することをお勧めします.すなわち、変数が匿名タイプまたは匿名タイプのセットを格納するために使用される場合にのみ使用します.
VARは任意のタイプに代わることができ、コンパイラはコンテキストに基づいてあなたがどのタイプを使いたいのかを判断します.
キーワードvarは、次の場合に使用できます.
注意varタイプを使用して変数を定義するには、次の4つの特徴があります.
varキーワード、objectキーワードとdynamicキーワードの違い;
1)varキーワードで定義される変数は強いタイプ変数であり、var i=1のように決定されたタイプで定義される変数と同じである.int i=1に等しい.定義された変数のタイプは、コンパイル中にコンパイラが等号の右側の値または式の逆推論に基づいて決定します.
2)objectタイプはC#構文で、すべてのタイプのベースクラスで、変数をobjectタイプに変換したり、objectタイプから値変数タイプに変換したりします.梱包や解体の問題に関連し、変数のタイプは実行時に決定され、変換エラーが発生すると実行時異常が放出されます.
int i =123;
object o = i;
変数oはSystem.Objectタイプを格納しているので、次の操作はサポートされていません.
Console.WriteLine(obj.GetType());
// System.Int32
// 。
// ,
// obj System.Object。
// obj = obj + 10;
// obj 。
obj = (int)obj + 10;
3、dynamicキーワード、objectキー機能との差は多くなく、任意のタイプの操作をサポートし、箱詰めや解体の問題はなく、コンパイラにこのオブジェクトのタイプが実行時にのみ決定され、コンパイラが介入しようとしないことを伝えるだけです.
注意:objectキーワードを使用するよりも、危険が増加したり、危険が減少したりしないので、反射などのオブジェクトを操作するにはdynamicオブジェクトを使用すると便利です.
dynamic dyn = 10;
Console.WriteLine(dyn.GetType());
// "object" .
// System.Int32
// 。
// ,
//
// dynamic 。
dyn = dyn + 10;
http://hi.baidu.com/songwentao/blog/item/b5569a825d92249af603a684.html
http://baike.baidu.com/view/407694.htm