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

时间:2013-05-28 10:48:50

标签: c#

C#中的varstring之间有什么区别?

6 个答案:

答案 0 :(得分:12)

关键字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 });

答案 1 :(得分:5)

var是隐式类型,string是显式类型,但这些声明与函数等效

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

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

答案 2 :(得分:2)

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

string是一种类型 - 一种显式类型,基本上被编译器替换为System.String

var是一个代表一个类型的关键字 - 当编译器可以告诉变量的类型应该是什么时(比如函数的返回类型或文字)。如果使用字符串,编译器将进行与上面相同的替换。

答案 3 :(得分:2)

Var用于声明隐式类型变量,其中编译器自动识别类型。 var可以包含任何类型的数据。 String是仅用于保存字符串数据的显式声明。

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


String s = "ABCD";

答案 4 :(得分:2)

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

'var'用于声明隐式类型,无论是int,string,double,对象等等。当你不完全知道方法的返回类型或者你不关心它时,它很有用。所有

'string'是一种特殊的数据类型,它只能保存字符串数据,而不能保存任何类型。

同样对于var,必须在声明var变量时定义类型,即仅在编译时,否则编译器将标记编译时错误。 因此,而

string abc;

是可能的,但

var abc;

是不可能的。

答案 5 :(得分:0)

VB.NET没有实际的区别,还有另一个discussion有更多信息