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

C# 在C中使用var而不是var关键字#,c#,C#,我对var和非var初始化有一些混淆 var x=10; x=12; C#中的初始化有什么区别 我知道var是用于以下方式的关键字 当类型很难写入时,例如LINQ查询(首先是var的原因)使用var 谢谢 湿婆这是一个编译 var x=10; 在这个场景中,这一个并不假设您正在尝试初始化x x=12; 它必须是: int x = 12; 现在,var x=12和intx=12无。它们都是在编译时解析的。第一个用于声明和分配局部变量x。声明的新变量将自动获取=右侧的(强且非动态)类型。在

我对var和非var初始化有一些混淆

var x=10;

x=12;
C#中的初始化有什么区别

我知道var是用于以下方式的关键字

当类型很难写入时,例如LINQ查询(首先是var的原因)使用var

谢谢

湿婆

这是一个编译

var x=10;
在这个场景中,这一个并不假设您正在尝试初始化x

x=12;
它必须是:

int x = 12;

现在,
var x=12
intx=12无。它们都是在编译时解析的。

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

第二个用于(仅)分配给已在别处声明的变量或属性

var x = 10; 
等于

int x = 10;
是极好的语法糖

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

var

它是在C#3.0中引入的

当你不知道你要处理的是什么类型时,最好使用
var
,它从任务右侧的定义位置获取类型

  var x =10;

  x=12; 
在第一种情况下,编译器在运行时解析声明

让我们假设一下,如果你愿意的话

  var x=10;

  x="I am String";
将引发错误,因为编译器已确定
x
的类型为System.Int32(当值为10时)。现在给它赋值会违反类型安全性

优势

var
与c#3匿名类型和泛型结合使用时非常方便。匿名类型仍然是clr类型,但在编码时不能有类型名称


但是,为了更好的可读性,最好使用命名约定

要使用
var
关键字,必须有一个表达式,该表达式在equals(=)的右侧有一个类型才能编译

var myNumber=1将起作用,因为var将被编译为int类型<代码>myNumber=1
将不起作用,因为myNumber未声明。如果要声明一个在等号右侧没有任何内容的变量,则必须显式指定类型,即
int myNumber

就我个人而言,我只会在很明显它将编译成什么的时候使用var。。。e、 g

var myNumber = 1; 
var name = "some name"; 
var lst = List<int>();

当然,您可以转到该方法来查看返回值是什么,但对于其他开发人员来说,它可能更难读取。

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

但是在

x = 12;
您必须明确地确定类型,例如写:

int x= 12;

使用var没有性能方面的考虑,您可以自由使用它。

右侧的相关列中有十几个或更多的副本。添加外围注释-
var
并非纯粹为了方便,不必写出声明类型。添加它的主要原因是,如果没有它,就不可能返回匿名类型。所有其他的原因都是附加的。可读性较差的是调用变量“x”。@christiandev-当你说右边必须有一个值时,这是不正确的。它也可以是另一个变量—编译器能够找出正确类型的任何变量。@csg必须是一个具有类型的表达式。该表达式的类型将“而不是”使用
var
@siride,我只使用x表示变量名,但我永远不会使用x。为了清晰起见,我将进行编辑。@csg,我想你明白我的意思了吗?这是正确的吗?var x=10;x=“我是字符串”;我无法将int修改为string。因为var是动态类型,对吗?@SivaRajini在编译时,当编译器遇到
var x=10
时,它将
Int
数据类型分配给它,结果datataypwe发生了变化。。。。。现在,此后
x
保存的任何值都将是且仅为
Int
x = 12;
int x= 12;