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