【问题标题】:What is the difference between var and string in C#? [duplicate]C#中的var和string有什么区别? [复制]
【发布时间】:2013-05-23 07:28:57
【问题描述】:

C#中varstring有什么区别?

【问题讨论】:

  • What's the point of the var keyword? 甚至 Use of var keyword in C# 的可能重复项(投反对票,因为您的问题可以在 google 或 msdn 的帮助下轻松回答)
  • 我不明白为什么有些人会否决这个问题。我知道这是个愚蠢的问题,但带着疑问永远不会改善你的编码。所以这就是我问的原因。

标签: c#


【解决方案1】:

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

'var' 用于声明隐式类型,可以是 int 、 string 、 double 、 object 等。当您不完全知道方法的返回类型或者您不关心它时,它很有用全部。

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

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

string abc;

是可能的,但是

var abc;

不可能。

【讨论】:

  • 感谢 Tariq,它消除了我的疑虑。并为所有人提供答案。
【解决方案2】:

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

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


String s = "ABCD";

【讨论】:

    【解决方案3】:

    关键字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
    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

      在 VB.NET 中没有实际区别,还有另一个 discussion 提供更多信息

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • 实际上有一段时间我们将数据源存储在 var 中(如以下场景)。所以我很困惑它存储字符序列或作为dataTable或ArrayList工作。 var qurey= datasource();//按页面id排序 if(qurey != null) { ddlpagenubers.DataSource = qurey;
        • @John:它存储datasource() 返回的任何内容。检查方法返回类型以确保。
        • 耶!我得到了它。谢谢你的回答。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-07
        • 2016-05-17
        • 2017-08-16
        • 2019-06-25
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多