🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# var(C# 参考) 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 **var**。隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。下面的两个 i 声明在功能上是等效的: ``` var i = 10; // implicitly typed int i = 10; //explicitly typed ``` 有关更多信息,请参见[隐式类型的局部变量(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/bb384061.aspx)和 [Type Relationships in LINQ Query Operations (C#)](https://msdn.microsoft.com/zh-cn/library/bb397924.aspx)。 下面的示例演示了两个查询表达式。在第一个表达式中,允许但不需要使用 **var**,因为可以将查询结果的类型显式声明为 **IEnumerable<string>**。但是,在第二个表达式中必须使用 **var**,因为结果是一个匿名类型集合,而该类型的名称只有编译器本身可以访问。请注意,在第二个示例中,**foreach** 迭代变量 item 也必须转换为隐式类型。 ``` // Example #1: var is optional because // the select clause specifies a string string[] words = { "apple", "strawberry", "grape", "peach", "banana" }; var wordQuery = from word in words where word[0] == 'g' select word; // Because each element in the sequence is a string, // not an anonymous type, var is optional here also. foreach (string s in wordQuery) { Console.WriteLine(s); } // Example #2: var is required because // the select clause specifies an anonymous type var custQuery = from cust in customers where cust.City == "Phoenix" select new { cust.Name, cust.Phone }; // var must be used because each item // in the sequence is an anonymous type foreach (var item in custQuery) { Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone); } ``` ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [隐式类型的局部变量(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/bb384061.aspx)