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