English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 隠示変数(var)

C#では、変数はデータタイプを使用して宣言する必要があります。これらは明示的なタイプ変数と呼ばれます。

int i = 100;// 明示的な変数

C#3.0は、データタイプを明示的に指定せずにメソッドレベルの変数を宣言するためにvarキーワードを導入しました。                    

var j = 100; // 暗黙的なローカル変数

コンパイラは、=演算子の右側の表現から変数の型を推測します。上記では、varはintにコンパイルされます。

以下は、表現から型を推測しています。

int i = 10;
var j = i + 1; // intにコンパイルされます

varは、内蔵データタイプ、ユーザー定義タイプ、または匿名タイプの変数を宣言するために使用できます。以下の例では、C#コンパイラが値に基づいて型を推測しています:        

static void Main(string[] args)
{
    var i = 10;
    Console.WriteLine("Type of i is {0}", i.GetType());
    var str = "Hello World!!";
    Console.WriteLine("Type of str is {0}", str.GetType());
    var dbl = 100.50d;
    Console.WriteLine("Type of dbl is {0}", dbl.GetType());
    var isValid = true;
    Console.WriteLine("Type of isValid is {0}", isValid.GetType());
    var ano = new { name = "Steve" };
    Console.WriteLine("Type of ano is {0}", ano.GetType());
    var arr = new[] { 1, 10, 20, 30 };
    Console.WriteLine("Type of arr is {0}", arr.GetType());
    var file = new FileInfo("MyFile");
    Console.WriteLine("Type of file is {0}", file.GetType());
}

隐式类型的变量必须在声明时进行初始化;否则,C#编译器会给出错误:必须初始化隐式类型的变量。

var i; // 编译时错误:必须初始化隐式类型的变量
i = 100;

var不允许在单个语句中多次声明变量。

var i = 100, j = 200, k = 300; // 错误:无法在单个语句中声明var变量//以下内容也有效var i = 100; 
var j = 200; 
var k = 300;

var 不能用于函数参数。

void Display(var param) //编译时错误
{
    Console.Write(param);
}

var 可以在for和foreach循环中使用。

for(var i = 0; i < 10; i++)
{  Console.WriteLine(i);
}

var 也可以与LINQ查询一起使用。

// 文字列集合
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials" ,
    "Java" 
};
// LINQクエリ文法
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;