何时使用类型推断?我们总能使用VAR吗?

时间:2014-09-11 21:52:28

标签: c#

类型推理VAR只有在他必须去替换" int" string"时才能被程序识别。等等。?如果是的话,总是使用VAR会不会更好?

3 个答案:

答案 0 :(得分:3)

使用var关键字有利有弊。

使用var

有什么好处
  • 不要重复自己(干) - 应该避免使用冗余代码。
  • 更快地创建代码
  • 要求改进变量命名 - 可以作为描述性命名的提醒
  • 提高了可读性 - 在某些情况下(重复类型很长且很复杂)
  • 如果您以后需要更改类型
  • ,请少修改代码
  • 更明确区分何时确实要指定类型

使用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

答案 1 :(得分:3)

在MSDN中,there are some guidelines。通常,在这种情况下它有助于提高可读性:

  1. 声明具有原始值的变量:var i = 0
  2. 使用构造函数声明对象:var logText = new StringBuilder()
  3. 内部forforeach声明:foreach (var word in dictionary)
  4. 处理LINQ查询。
  5. 另外,请注意there's a case var在构建匿名类型时必须使用{{1}}。

答案 2 :(得分:2)

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

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

  • 您可能希望使用null初始化变量(这是一种可论证的做法),这会阻止编译器推断类型。

  • 通常,特别是在对接口和抽象进行编码时,您希望明确使用接口或基类型,如IEnumerable<Item> items = new List<Item>()