在C#中使用var而不是var关键字

时间:2013-08-31 13:14:18

标签: c#

我对var和var初始化感到困惑。

var x=10;

x=12;

C#中的初始化有什么区别?

我知道var is keyword用于以下几种方式。

当要编写的类型很复杂时,例如LINQ查询(首先是var的原因),请使用var。

谢谢,

希瓦

6 个答案:

答案 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)

var x = 10; 

相当于

int x = 10;

var是极好的语法糖。

当您撰写x = 10时,您的x必须在之前宣布。

答案 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 没有性能考虑因素,您可以自由使用它。