我是C#的新手,请帮助我理解以下声明之间的区别:
var variable_name = new class_a(); // there is no error and is working fine
var variable_name;
variable_name = new class_a(); // this line is throwing error
Run Code Online (Sandbox Code Playgroud)
当我把声明重写为
class_a variable_name;
variable_name = new class_a(); // this is working fine
Run Code Online (Sandbox Code Playgroud)
var用于引入隐式类型的局部变量.该类型在编译时是已知的,并且是从初始化语句右侧的表达式类型推断出来的.使用你的例子:
var variable_name = new class_a();
Run Code Online (Sandbox Code Playgroud)
编译器推断出这new class_a()是一个产生类型对象的表达式class_a.因此variable_name被宣布为类型class_a.这段代码完全等同于
class_a variable_name = new class_a();
Run Code Online (Sandbox Code Playgroud)
如果省略了初始化的右侧,则编译器无法推断出类型.因此编译错误.
var根据变量初始化的值自动推断数据类型.
var i = 3; // 3 is an int; thus, i is declared as an int.
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,没有指定值,因此无法推断.
var i; // no data type can be inferred
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |