在C#中使用var而不是var关键字
本文关键字:var 关键字 | 更新日期: 2023-09-27 18:29:41
我对var和var初始化有一些困惑。
var x=10;
x=12;
C#中的初始化有什么区别?
我知道var is关键字用于以下几种方式。
当类型编写复杂时,例如LINQ查询(首先是var的原因),请使用var.
谢谢,
Siva
这个编译。
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不考虑性能,您可以自由使用它。