連載:[完全版]究極のC#プログラミング

Chapter12 varによる変数宣言とコレクション初期化子

川俣 晶
2010/02/01

 本記事は、(株)技術評論社が発行する書籍『[完全版]究極のC#プログラミング ― 新スタイルによる実践的コーディング』から、許可を得て転載しています。
 同書籍は、もともと本フォーラムにて連載していた『C# 2.0入門』、『C# 3.0入門』の記事を整理統合し、加筆、修正されたものです。

手元でまとめて読みたい方は、ぜひ書店などにてお買い求めください。

 【注意】本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

12.1 暗黙的に型指定されるローカル変数

 C# 3.0では、明示的に型を指定することなく、ローカル変数を宣言することができる

 たとえば、

int i = 123;

は、

var i = 123;

と書くことができる。

 「var」というキーワードは「暗黙的に型指定されるローカル変数」を宣言するためのキーワードなので、int型以外の変数を宣言する場合にも使用できる。たとえば、

string s = "Welcome to C# 3.0";

は、

var s = "Welcome to C# 3.0";

 と書いてもよい。

 もちろん、自分で定義したクラスMyClassがあるとき、

MyClass instance = new MyClass();

と書く代わりに、

var instance = new MyClass();

と書くこともできる。

 このような機能に対しては、過剰な肯定と過剰な否定という、2つの典型的なリアクションがしばしば見られるように思う。

 過剰な肯定とは、LL(Lightweight Language:軽量プログラミング言語)の信奉者などに見られるものである。彼らは、型をソースコード上に明示せず、実行時に動的に型を扱うことが良いと主張することが多い。上記のような構文は、型の解決がコンパイル時から実行時に遅延されたかのように見えるために、C#が静的に型付けされた言語から、動的に型付けされた言語に変わったかのように見えることがある。

 一方、過剰な否定とは、Visual Basic(以下、VB)におけるVariant型の悪夢再来と受け止めるタイプである(次節で説明する)。

 この2つはいずれも誤解でしかないので、誤って思い込むと、C# 3.0をうまく扱えないワナにはまり込む恐れがある。そこで、この件について詳しく説明しよう。


 INDEX
  [完全版]究極のC#プログラミング
  Chapter12 varによる変数宣言とコレクション初期化子
  1.12.1 暗黙的に型指定されるローカル変数
    2.12.2 Variant型の悪夢
    3.12.3 暗黙的に型を明示する
    4.12.4 なぜvarを使うのか?
    5.12.5 varが使用できない場面
    6.12.6 varを活用できる場面
    7.12.7 暗黙的に型指定されるローカル配列
    8.12.8 暗黙に型付けされた配列と型の推測
    9.12.9 暗黙に型付けされた配列とnull
    10.12.10 コレクション初期化子
    11.12.11 Dictionaryクラスとコレクション初期化子
    12.12.12 引数が2つのAddメソッドとコレクション初期化子/C#olumn
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間