为什么c#需要整型?它已经有了“变量”关键字

本文关键字:变量 关键字 整型 为什么 | 更新日期: 2023-09-27 18:02:24

这可能是一个愚蠢的问题,但我真的不知道原因。

    // i is compiled as an int
    var i = 5;
    // s is compiled as a string
    var s = "Hello";
    // a is compiled as int[]
    var a = new[] { 0, 1, 2 };
    // expr is compiled as IEnumerable<Customer>
    // or perhaps IQueryable<Customer>
    var expr =
        from c in customers
        where c.City == "London"
        select c;
    // anon is compiled as an anonymous type
    var anon = new { Name = "Terry", Age = 34 };
    // list is compiled as List<int>                             
    var list = new List<int>();

如果是,为什么C#需要像int, string, int[], List<>这样的整型?如果我们只能对var关键字做到这一点,为什么还有整型呢?

,

这两者的区别是什么?

var s = "Hello";
string s = "Hello";

为什么c#需要整型?它已经有了“变量”关键字

不分先后…

  • var只是一个编译器结构;即使var i = 4;也被输入为int
  • c#并不总是有var,你不能删除关键字而不完全破坏现有的代码。
  • 你只能在方法变量中使用var,而不能在字段、参数、返回类型等中使用。
  • 大多数人都喜欢输入int来代替var!特别是当类型很重要,并且有字节,浮点数,枚举数,小数等与文字0一起工作时;即short x = 0; int y = 0; long z = 0; -为什么只将 int更改为var呢?
  • 您不能使用var来指定泛型类型参数(<T>)或typeof
  • 不能用var.TryParse代替int.TryParse

许多人会认为写int i = 5比写var i = 5更好。这有很多原因,但对我来说最引人注目的是,我可以看到代码并立即知道i是什么类型,而无需拉伸我的大脑。这可以让我的大脑集中在更难的问题上。

实际上,引入var是为了声明那些类型不容易命名的变量。它不是为了方便而引入的,尽管它可以这样使用。

var关键字只是语法糖,只能用于方法中的局部变量。它仍然是一个强类型变量。你可以在visual studio中将鼠标悬停在它上面来查看它的类型。

我们仍然需要类型,否则你怎么做var list = new List<int>(); ?你需要在某个地方输入List<int> !

在许多情况下,最好是显式的,例如当处理可能是许多不同类型的字面值时,或者为了增加可读性。

var s = "Hello";"string s ="Hello";"无差异。然而,var foo = new Foo();IFoo foo = new Foo();之间有很大的区别。在第一种情况下,Foo的所有成员都是可访问的,在后一种情况下,确保只使用接口成员。这对于确保行为与接口兼容(而不仅仅是与具体实现兼容)可能很重要。

另外,var不能用于传递函数参数或声明成员变量。至于使用或不使用var,我参考这个问题