C#中var和string有什么区别?

3
在C#中,varstring有什么不同之处? var是用于隐式类型的关键字,可以在声明变量时自动推断其类型。而string是表示字符串类型的关键字。
简而言之,var可以推断出任何类型的变量,而string仅仅只是代表字符串类型的变量。

可能是“var关键字的作用是什么?”或者“C#中var关键字的使用”的重复问题(给你负评,因为你的问题可以通过谷歌或MSDN轻松解决)。 - Tim Schmelter
我不知道为什么有些人会对这个问题投反对票。我知道这是一个愚蠢的问题,但是如果你在怀疑中工作,就永远无法提高你的编程水平。所以这就是我为什么要问的原因。 - John
6个回答

15

关键字var用于隐式类型声明。如果您为变量使用命名类型,则除了可读性之外没有其他区别(对于哪种方法更好的意见不同)。例如:

var s = "asdf";

与其完全相同的结果是:

string s = "asdf";

然而,如果您有一个未命名的类型,则必须使用var来声明具有该类型的变量。例如:

var o = new { s = "asdf" };

没有使用已命名类型的相应声明,因为所创建对象的类型没有名称。

var 关键字经常与 LINQ 和 LINQ 扩展方法一起使用,当结果没有具名类型时。例如:

var result = someList.Where(x => x.Age < 10).Select(x => new { name = x.Name });

谢谢Guffa!这是我的答案。 - John
1
很好地处理匿名类型,说得非常好 :) +1 - tariq

5

var 是隐式类型,string 是显式类型,但这些声明在功能上是等价的。

var implicitString = "hello";
string explicitString = "hello";

只有在方法作用域声明的变量才能具有隐式类型var。使用时,编译器从赋值语句右侧推断出类型。


实际上,有时我们把数据源存储在变量中(就像下面的场景一样)。因此我很困惑它是存储字符序列还是作为dataTable或ArrayList。var qurey= datasource();//order by page id如果(qurey != null) { ddlpagenubers.DataSource = qurey; - John
@John:它存储datasource()返回的任何内容。请检查方法返回类型以确保。 - Claudio Redi

2

Var用于声明隐式类型变量,编译器会自动识别类型。var可以保存任何类型的数据。String是一个明确声明只保存字符串数据的类型。

var i=5; 
var a="abcd"; 
var b= 5.5555; 
var c=new class(); 


String s = "ABCD";

2

首先,这些是C#关键字,而不是ASP.NET。

string是一种类型——一种明确的类型,基本上会被编译器替换为System.String

var是一个关键字,代表一个类型——当编译器可以确定变量的类型时(比如从函数的返回类型或文字中),它会代替该类型。如果你使用字符串,编译器将会像上面那样进行相同的替换。


2

var和string之间没有合法的比较。

'var'用于声明隐式类型,无论是int、string、double、对象等等。当您不确定方法返回类型或根本不关心时,它非常有用。

'string'是特定的数据类型,只能保存字符串数据而不能保存其他类型。

对于var变量来说,类型必须在声明var变量时即在编译时定义,否则编译器将标记编译时错误。因此,在使用var时需要谨慎。

string abc;

是可能的,但是...

var abc;

不可能实现。

1
谢谢Tariq,这解决了我的疑惑。也感谢所有人的回答。 - John

0

在VB.NET中实际上没有区别,这里有另一个讨论提供更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接