Skip to main content

隐式变量(var)

在C#中,变量必须使用数据类型声明。这些称为显式类型变量。

示例:显式类型变量

int i = 100;// 显式变量

C#3.0引入了var关键字来声明方法级变量,而无需显式指定数据类型。

示例:隐式类型的局部变量

var j = 100; // 隐式类型的局部变量

编译器将从=运算符右侧的表达式中推断出变量的类型。上面,var将编译为int。

以下从表达式推断类型。

示例:表达式中的var

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查询一起使用。

示例:C#中的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;