varが使用できる場面も2つ紹介しておこう。using文やforeach文でもvarは活用できるのである。■usingステートメントで使用するvarusingステートメントでもvarは使用できる。このケースではほかのケース以上にメリットを甘受できる印象がある。usingステートメントは、確実なファイルのクローズを実現するためにファイルの入出力とともに使うことも多いが、このとき、式が長くなる頻度が割と高い。いえば、以下のような理由があるためである。System.IO;」は記述されていないので、書き足さないで簡単にソースが書けるなら、そうしたい式にはファイル名などの引数が多く入り、引数も長くなりがち以下は、実際に名前空間込みで記述して長くなった例である。名前空間込みで長くなるクラス名このusingステートメントの行は、以下のようにvarを使って書き直すと、大幅に読みやすくなる。System.IO.File.CreateText("log.txt"))■foreachステートメントで使用するvarC#のforeachステートメントは、列挙するアイテムの型を明示することができる。1.0時代には非常に便利であった。ジェネリック導入前の.NETのコレクションは型を明示しない何でも入るスタイルだったからである。以下のようなコードは、キャストを書くことなく、汎用コレクションから整数を取り出しつつ列挙することを可能とした。2」という乗算が可能となるのは、foreachステートメントでint型を明示して、コレクションのアイテムを受け止めているためである。型の明示が意味を持つforeachステートメントしかし、ジェネリック導入後のC#にとって、foreach文での型の明示はあまり意味のある機能性とはいえない。コレクションを列挙する場合、列挙されるアイテムの型はコレクションの型に決まっているためである(あえて別の型で受けるという選択肢がないわけではないが)。3.0ではforeachステートメントにvarを用いて、列挙されるアイテムの型をソース・コード上で明示しないことも有効だろう。列挙されるアイテムの型をソース・コード上で明示しない例ちなみに、単に型を明示しないで列挙するだけなら、ラムダ式を使う方法もある。暗黙的に型指定されるローカル配列ローカル変数として宣言される配列も、ローカル変数の一種である以上、varを用いて宣言することができる。int[10];と書いてもよい。};を、以下のように書き換えることはできない。{......})という機能を用いると、これは以下のように記述することができる。[]」の後に初期化リストを書けばよい。この場合には、配列の要素の型は、初期化に使用される値(この場合では1、2、3)より推測される。通常の変数と違って、配列の初期化リストは複数の型の値を列挙できるため、解釈が難しい。継承された3つのクラスのインスタンスを使用した事例から、どのように型が推測されるかを見てみよう。推測された配列の型を確認するつまり、変数case1〜case3が示すように、型が統一されていればその型が採用される。変数case4のように、配列内に複数の型が混在する場合、すべての値が変換可能な型として、Aが選択され、A[]という型になっている。以下のコードはコンパイル・エラーになる。暗黙的に型指定された配列の最適な型が見つかりませんでしたこのケースでは、変数の型をA[]とすれば記述可能である。この初期化リストに含まれる型の候補はBとCであり、Aは含まれない。それ故に、A[]という推測はできず、コンパイルはエラーになる。逆にいえば、この配列は以下のように型を明示すればコンパイルできる。OKなお、数値に関してもこのような推測が行われる。整数(int)と実数(double)が混在した初期化リストがあるとき、これはdouble[]と推測される。int型は暗黙的にdouble型に変換可能だからである。aはdouble[]型と推測される暗黙に型付けされた配列とnull「暗黙に型付けされた配列」でも、「暗黙的に型指定されるローカル変数」と同様に、やはりnullは特殊な扱いを受ける。nullが常に受け付けられないわけではない。以下のケースは有効である。文字列である"A"や"B"によって型を推測できるので、nullが含まれていても推測できる。case1はstring型しかし、以下のケースでは型を推測する手掛かりがないので、コンパイル・エラーとなる。暗黙的に型指定された配列の最適な型が見つかりませんでしたとはいえ、型のヒントさえあればよいので、以下のようにnull値にキャストを付けて型を明示してやれば、コンパイル可能となる。case3はstring型しかし、以下のように型を明示して書く方が短く書けるので、あまり役立つテクニックでもないだろう。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。