在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;