C#隐式类型变量

2166 更新于: 2021-05-26 读完约需 4 分钟

概述

上一节《C#变量》中,我们了解了C#语言中变量的概念,学习了如何声明变量的基本语法、约定及常见问题等,同时还引出了var关键字声明变量的知识点,本节我们就来介绍使用关键字var来声明隐式类型变量。

关键字var

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

byte age = 20; // age为显式类型变量

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

var age = 20; // 这里的age是隐式类型变量

注意:是小写的var,而不是VAR,或者Var。还记得前面学过的C#语言是大小写敏感的吗?

编译器将从等号(=)操作符右侧的表达式推断出变量的类型。在上面示例中,var将被编译为int

特别注意: 在使用var关键字进行隐式类型变量声明时,必须使用等号(=)操作符对变量进行初始化(赋值),否则C#编译器将抛出编译错误,比如下面使用var关键字声明的变量age是错误的:

var age;  // 报错!!!因为没有对age赋值,所以C#编译器不能推断出var代表的具体数据类型
age = 20;

以下由var声明的变量age2也可以由表达式进行数据类型的推断:

byte age = 10;
var age2 = age + 1;

在由var关键字声明的变量语句中,不能在一条语句声明多个变量,比如我们上一节学过的如下变量声明是正确的

byte age1, age2, age3; // 这条语句同时声明了三个年龄变量,分别为:age1, age2, age3

或者

byte age1=10, age2=20, age3; // 这条语句同时声明了age1, age2, age3这三个变量,并且为其中的变量age1和age2进行了赋值

但如下在一条语句中使用var关键字声明的多个变量的语法是错误的

var age1 = 10, age2 = 20, age3 = 30;

var关键字除了可以用来声明方法级的变量,还可以在for以及foreach循环中使用,比如:

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

但不能在方法的参数中使用var关键字作为参数的类型,如下的使用是错误的

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

var关键字还可以是LINQ查询得到的结果,如下示例:

List<int> scores = new List<int>{30,40,50,55,60,65,70,75,80,85,88,90,100};
var result = from s in scores
                    where s >= 60
                    select s;

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

发表评论

登录用户才能发表评论, 请 登 录 或者 注册