什么时候使用类型推理?我们总是可以使用VAR
本文关键字:可以使 我们 VAR 类型 推理 什么时候 | 更新日期: 2023-09-27 18:21:44
只有当程序必须替换"int"string"等时,类型推理VAR才会被程序识别。如果是,总是使用VAR不是更好?
使用var关键字有优点也有缺点。
使用var有什么好处
- 不要重复自己(DRY)-应该避免多余的代码
- 更快地创建代码
- 呼吁改进变量命名——可以作为描述性命名的提醒
- 提高了可读性——在某些情况下(重复类型较长且复杂)
- 如果以后需要更改类型,则代码修改较少
- 更清楚地区分何时真正要指定类型
使用var的缺点
- 可读性损失——在某些情况下(类型不明显)
- 对类型的更改可能会引入错误,否则编译器会为开发人员捕获这些错误
+好:
var numbers = new int[] {1, 2, 3, 4};
var stringbuilder = new StringBuilder();
var cars = new List();
var orders = new Dictionary();
+/-可以(但更喜欢显式声明):
int pages = 10;
string username = “john”;
var username = “john”;
var order = GetOrder(orderId); // ok if the type is Order, otherwise not
for (var x = 1; x < 10; x++)
-错误:
var settings = GetInboxSettings(); // not obvious at all
var userId = GetUserId(); // ambigous, is this guid, string, int or a custom UserId object?
Dictionary orders = new Dictionary(); // redundant
在MSDN中,有一些指导原则。通常,在这种情况下,它有助于可读性:
- 声明具有基元值的变量:
var i = 0
- 用构造函数声明对象:
var logText = new StringBuilder()
for
和foreach
语句内部:foreach (var word in dictionary)
- 处理LINQ查询
另外,请注意,在构造匿名类型时,var
是强制性的。
我通常选择var
,并尝试选择会说话的变量名。但在某些情况下,使用实际类型可能非常有用:
-
在某些特殊情况下,使用实际类型可能会使代码更具可读性。
-
您可能想要用
null
初始化一个变量(这是一种有争议的做法),它可以防止编译器推断类型。 -
通常,尤其是在针对接口和抽象进行编码时,您希望显式地使用接口或基类型,如
IEnumerable<Item> items = new List<Item>()
中所示