什么时候使用类型推理?我们总是可以使用VAR

本文关键字:可以使 我们 VAR 类型 推理 什么时候 | 更新日期: 2023-09-27 18:21:44

只有当程序必须替换"int"string"等时,类型推理VAR才会被程序识别。如果是,总是使用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中,有一些指导原则。通常,在这种情况下,它有助于可读性:

  1. 声明具有基元值的变量:var i = 0
  2. 用构造函数声明对象:var logText = new StringBuilder()
  3. forforeach语句内部:foreach (var word in dictionary)
  4. 处理LINQ查询

另外,请注意,在构造匿名类型时,var是强制性的。

我通常选择var,并尝试选择会说话的变量名。但在某些情况下,使用实际类型可能非常有用:

  • 在某些特殊情况下,使用实际类型可能会使代码更具可读性。

  • 您可能想要用null初始化一个变量(这是一种有争议的做法),它可以防止编译器推断类型。

  • 通常,尤其是在针对接口和抽象进行编码时,您希望显式地使用接口或基类型,如IEnumerable<Item> items = new List<Item>()中所示

相关文章: