C#中的var
和string
之间有什么区别?
答案 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有更多信息