Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的var和string有什么区别?_C# - Fatal编程技术网

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

C#中的var和string有什么区别?,c#,C#,C#中的var和string有什么区别?var是隐式类型,string是显式类型,但这些声明在功能上是等价的 var implicitString = "hello"; string explicitString = "hello"; 只有在方法范围内声明的变量才能具有隐式类型var。使用时,编译器从赋值的右侧推断类型。在VB.NET中没有实际的区别,有另一个包含更多信息,这些是C#关键字,而不是ASP.NET string是一种类型-一种显式类型,基本上由编译器用System.string替

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

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

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

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

在VB.NET中没有实际的区别,有另一个包含更多信息,这些是C#关键字,而不是ASP.NET

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


var
是一个代表类型的关键字,此时编译器可以判断变量的类型(比如从函数的返回类型或文本)。如果使用字符串,编译器将进行与上面相同的替换。

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

var s = "asdf";
var o = new { s = "asdf" };
var result = someList.Where(x => x.Age < 10).Select(x => new { name = x.Name });
给出与以下结果完全相同的结果:

string s = "asdf";
但是,如果您有一个未命名的类型,则必须使用
var
来声明具有该类型的变量。例如:

var s = "asdf";
var o = new { s = "asdf" };
var result = someList.Where(x => x.Age < 10).Select(x => new { name = x.Name });
没有使用命名类型的相应声明,因为创建的对象的类型没有名称

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

var s = "asdf";
var o = new { s = "asdf" };
var result = someList.Where(x => x.Age < 10).Select(x => new { name = x.Name });
var result=someList.Where(x=>x.Age<10)。选择(x=>new{name=x.name});

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

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


String s = "ABCD";

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

“var”用于声明隐式类型,可以是int、string、double、object等。当您不确切知道方法的返回类型或根本不关心它时,它非常有用

“string”是一种特殊的数据类型,只能保存字符串数据,不能保存任何类型的数据

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

string abc;
是可能的,但是

var abc;

这是不可能的。

可能重复,甚至(向下投票,因为你的问题可以在谷歌或msdn的帮助下轻松回答)我不知道为什么有些人会投票否决这个问题。我知道这是一个愚蠢的问题,但带着怀疑工作永远不会改善你的编码。所以这就是我问的原因。事实上,有时我们将数据源存储在var中(如下面的场景)。所以我很困惑,它将字符序列或工作序列存储为dataTable或ArrayList。var qurey=datasource()//如果(qurey!=null){ddlpagenubers.DataSource=qurey;@John:它存储任何
DataSource()
returns。检查方法返回类型以确定。耶!我知道了。谢谢你的回答。谢谢塔里克,它消除了我的疑问。感谢所有人的回答。谢谢Guffa!这是我的答案。ie很好地处理匿名类型,很好地说:)+1