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

本文关键字:var 关键字 | 更新日期: 2023-09-27 18:29:41

我对var和var初始化有一些困惑。

var x=10;
x=12;

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

我知道var is关键字用于以下几种方式。

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

谢谢,

Siva

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

这个编译。

var x=10;

这并不是假设您在这个场景中试图初始化x。

x=12;

必须是:

int x = 12;

现在var x=12;int x = 12;之间有什么区别。它们都是在编译时解析的。

第一个用于声明分配局部变量x。声明的新变量将自动获得=右侧的(强和非动态)类型。在您的示例中,这是类型int

第二个用于将(仅)赋值给已经在其他地方声明的变量或属性。

要使用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();

当然,您可以访问该方法来查看返回值,但对于其他开发人员来说,读取它可能会更加困难。

var x = 10; 

等于

int x = 10;

var是一种优秀的句法糖。

当您编写x = 10时,您的x必须在之前声明。

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。现在为其分配字符串值违反了类型安全

优点

当您将var与c#3匿名类型和泛型相结合时,它会派上用场。匿名类型仍然是clr类型,但在编码时不能有类型名称

然而,最好使用命名约定以获得更好的可读性

var别名C#中的任何类型,其类型将由C#编译器确定,或者是隐式类型。

但在

x = 12;

您必须显式确定类型,例如写入:

int x= 12;

使用var不考虑性能,您可以自由使用它。