我对var和var初始化感到困惑。
var x=10;
x=12;
C#中的初始化有什么区别?
我知道var is keyword用于以下几种方式。
当要编写的类型很复杂时,例如LINQ查询(首先是var的原因),请使用var。
谢谢,
希瓦
答案 0 :(得分:1)
这个编译。
var x=10;
这个假设您没有尝试在这种情况下初始化x。
x=12;
必须是:
int x = 12;
现在var x=12;
和int x = 12;
之间没有什么区别。它们都在编译时解决。
答案 1 :(得分:1)
第一个用于声明 和 分配局部变量x
。声明的新变量将自动获得=
右侧的(强和非动态)类型。这是您示例中的int
类型。
第二个用于(仅)分配已经在其他地方声明的变量或属性。
答案 2 :(得分:1)
要使用var
关键字,必须是一个表达式,它在equals(=)的右侧拥有一个类型,以便进行编译。
var myNumber = 1;
将起作用,因为var将作为类型编译为int。 myNumber = 1
将无效,因为未声明myNumber。如果要声明等号右侧没有任何内容的变量,则必须明确指定类型,即int myNumber
。
就个人而言,我只会使用var,因为很明显它会编译成什么......例如。
var myNumber = 1;
var name = "some name";
var lst = List<int>();
不太明显......
var data = GetData();
当然,您可以转到该方法查看返回的内容,但对其他开发人员来说可能更难阅读。
答案 3 :(得分:0)
答案 4 :(得分:0)
var
它是在C#3.0中引入的
1 ) var declarations are resolved at compile-time.
2) Errors are caught at compile time.
当你不知道你在处理什么类型时,最好使用var
它从定义它的赋值的右侧获取它。
var x =10;
x=12;
在第一种情况下,编译器在运行时解析声明
让我们假设您是否已经完成
var x=10;
x="I am String";
将抛出错误,因为当为其分配值10时,编译器已经确定x
的类型是System.Int32。现在为其分配字符串值会违反类型安全性
<强>优点强>
当你将它与c#3匿名类型和泛型组合时, var
会派上用场,匿名类型仍然是clr类型,但你不能在编码时拥有类型名称
然而,最好使用命名约定以提高可读性
答案 5 :(得分:0)
var 别名C#中的任何类型,其类型将由C#编译器确定,或者隐式输入。
但是在
x = 12;
你必须明确确定类型,例如写:
int x= 12;
使用 var 没有性能考虑因素,您可以自由使用它。