C#VARタイプ

2290 ワード


       メソッド範囲で宣言される変数は、暗黙的なタイプvarを有することができる.暗黙的なタイプのローカル変数は、強いタイプ変数です(タイプを宣言したように)が、コンパイラによってタイプが決定されます.次の2つのi宣言は、機能的に同等です.
var i = 10; // implicitly typed
int i = 10; //explicitly typed

       
varの使用が多すぎると、ソースコードの可読性が他人の目に悪くなる可能性があります.必要に応じてvarを使用することをお勧めします.すなわち、変数が匿名タイプまたは匿名タイプのセットを格納するために使用される場合にのみ使用します.
VARは任意のタイプに代わることができ、コンパイラはコンテキストに基づいてあなたがどのタイプを使いたいのかを判断します.
 キーワードvarは、次の場合に使用できます.
  • どのタイプが使用されるか分からない場合、VAR
  • を使用することができる.
  • 型Objectタイプですが、強いタイプで、効率はObjectタイプより
  • 高いです.
    注意varタイプを使用して変数を定義するには、次の4つの特徴があります.
  • は、定義時に初期化する必要があります.(var s="abcd";var sできない;s="abcd";)
  • 初期化後、変数に初期化値タイプとは異なる値を割り当てることはできません.できない場合(var i=1;i=「ab」)は、異なるタイプの値に割り当てられます.
  • var要件は、ローカルメソッドのローカル変数
  • である.
  • varを使用して変数を定義するのはobjectタイプとは異なり、その効率は強いタイプを使用して変数を定義するのと全く同じです.

  • 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