2.Implicitly Typed Local Varables(暗黙のタイプ)とImplicitly Typed Aray(暗黙のタイプ配列)

5273 ワード

【目次に戻る】
JavaScriptを書いたことがある友達はとっくに上に述べた新しいキーワード「var」に目を向けていたかもしれません.そうですね.なんと熟知している字の穴が、今ではC驮の中にも現れています.どう使いますか?短いコードを見せてください.
   1: static void Main(string[] args)
   2: {
   3:     var name = "ZeroCool";
   4:     var age = 24;
   5:  
   6:     Console.WriteLine(name + " is " + age + " years old.");
   7: }
このコードをC鑰3.0で作成すれば、実行できます.varを使うと何かいいところがありますか?objectも代わりにできますか?はい、代替できます.objectはベースタイプです.もちろん、それを使って任意のタイプの変数を宣言することができます.しかし、値の種類をobjectで宣言すると箱詰め操作が起こり、性能が低下します.また、いくつかのobject宣言の変数を使って演算するなら、それらをそれぞれのタイプに変換しなければなりません.キーワードvarの利点は、非常に便利に暗黙的な型変数を宣言することができます.コンパイラはその変数を使用するときにその値に従ってタイプを逆に押し出すことができます.ただし、varは具体的な変数型ではなく、単に声明の種類であり、データ型の声明をコンパイラに渡す役割を果たしています.これを使って任意の型の変数を宣言してもいいです.前のプログラムの変数ageのように、int型の変数として認識されていますが、実際にこのコードを書いたときはまだ違います.コンパイラはコンパイラの値によって逆にそれを起動します.前に見たのはvarキーワードでいくつかの簡単な型の変数を宣言していますが、複雑な型の変数は配列やセットなど、varキーワードを使ってもいいですか?答えは肯定的です.
   1: static void Main(string[] args)
   2: {
   3:     var memberNames = new[] { "ZeroCool", "Michael", "Somebody" };
   4:  
   5:     foreach (var item in memberNames)
   6:     {
   7:         Console.WriteLine(item.ToString());
   8:     }
   9:  
  10:     Console.ReadLine();
  11: }
このコードは正常に実行できます.同じです.NETが提供してくれた他のタイプはすべてvarで声明できます.ユーザーのカスタムタイプも含まれています.さらに、より強力な点は、暗黙的なタイプの配列の要素が、匿名のオブジェクト初期器によって匿名のタイプのデータ構造を作成することができることである.
   1: static void Main(string[] args)
   2: {
   3:     var memberInfo = new[] {
   4: {
   5: Name = "ZeroCool",
   6: Details = new[] { "[email protected]", "China" }
   7:     },
   8: {
   9: Name = "Michael",
  10: Details = new[] { "[email protected]", "China", "Programmer" }
  11:     }
  12: };
  13: }
ただし、varキーワードを使って変数を宣言する際には、いくつかの注意事項があります.
  • 変数を宣言するときは初期化しなければなりません.
  • エラー:var name;
  • 初期器は式でなければならない.
  • エラー:var names=「"ZeroCool"Autumoon"
  • 初期器式はnullタイプではないコンパイル時タイプでなければなりません.
  • エラー:var name=null;
  • ローカル変数の宣言には複数のステートメントが含まれていません.
  • エラー:var name=「ZeroCool」、country=「China」
  • 初期器は宣言された変数自体を使用できません.
  • エラー:var name=name+"A"
  • 暗黙的なタイプの配列は、配列内部のメンバのタイプが一意であることを保証しなければならない.
  • エラー:var names=new[]{"ZeroCool",123};
  • 隠しタイプの内容は比較的簡単で、使いやすいです.まずここに紹介します.次にExtension Methodsです.これからはどうなるかを知りたいです.また、次回の話を聞きたいです.