优点与优点.net 3.5 中 var 数据类型的缺点

发布于 2024-09-28 17:22:11 字数 383 浏览 4 评论 0原文

可能的重复:
C# 中 var 关键字的使用
在变量声明中使用“var”类型

大家好,

“Var keywork 它需要显式类型转换 尽可能避免对值类型进行装箱和拆箱。”

是否建议使用 var 关键字而不是显式数据类型?

Possible Duplicates:
Use of var keyword in C#
Use of “var” type in variable declaration

Hello everybody,

"Var keywork it require explicitly type casting Avoid boxing and unboxing value types where possible."

Is it advisable to use var keyword instead of explicit datatype?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灼疼热情 2024-10-05 17:22:11

来自 ReSharper Horizo​​ns 博客

  1. 它可以更好地命名局部变量。当您阅读具有显式类型的局部变量声明时,您可以在以下位置获得更多信息:
    那一刻和“IUnitTestElement current”之类的东西是有道理的。
    然而,当稍后使用这个局部变量时,你会读到“current”
    这需要一些时间才能弄清楚其含义。使用“var
    currentElement”使得在任何地方都更容易阅读。

  2. 它会产生更好的 API。当你让编译器从方法返回类型或属性类型推断类型时,你必须有好的类型
    第一名。当你没有明确的类型时
    初始化表达式,您必须为成员提供最好的名称。

  3. 它会引发变量初始化。在声明中初始化变量通常是一个好习惯,编译器需要
    用于推断用“var”声明的局部变量的类型的初始值设定项
    关键字。

  4. 它消除了代码噪音。在很多情况下,隐式输入本地内容会减少开发人员需要阅读的文本量,或者
    而是跳过。从新对象表达式声明局部变量或
    如果我们不使用“var”,强制转换表达式需要指定类型两次。
    使用泛型可能会导致大量多余的代码。
    另一个例子是 foreach 中的迭代变量
    字典。

  5. 它不需要 using 指令。使用 var,您没有对类型的显式引用,因为编译器会为您推断类型,因此您
    当需要临时变量时不需要导入命名空间。

缺点是代码的可读性可能较差。例如该行
int myInt = 0;
对于大多数人来说仍然比
var myInt = 0;
但这主要是由于我们多年来一直在研究的语法。

From ReSharper Horizons blog:

  1. It induces better naming for local variables. When you read local variable declaration with explicit type, you have more information at
    that moment and something like "IUnitTestElement current" makes sense.
    However, when this local variable is used later, you read "current"
    which takes some time to figure out the meaning. Using "var
    currentElement" makes it easier to read at any place.

  2. It induces better API. When you let compiler deduce type from method return type or property type, you have to have good types in
    the first place. When you don't have explicit type in the
    initialization expression, you have to have best names for members.

  3. It induces variable initialization. It is generally a good practice to initialize variable in the declaration, and compiler needs
    initializer to infer type for local variable declared with "var"
    keyword.

  4. It removes code noise. There are a lot of cases, when implicitly typed local will reduce amount of text developer needs to read, or
    rather skip. Declaring local variable from new object expression or
    cast expression requires specifying type twice, if we don't use "var".
    With generics it can lead to a lot of otherwise redundant code.
    Another example would be iteration variable in foreach over
    Dictionary.

  5. It doesn't require using directive. With var, you don't have explicit reference to type, as compiler infers type for you, so you
    don't need to import namespace when you need a temporary variable.

The cons are potentially less readable code. For instance the line
int myInt = 0;
is still more straightforward for most than
var myInt = 0;
but this is mainly due to the syntax we're all been looking at for years.

美男兮 2024-10-05 17:22:11

var 不是一种数据类型,它只是“让编译器推断在编译时使用什么实际类型”的“语法糖”。

因此,您只需要了解以下类型推断:

var x = 4; //int
var y = 4.0; //double
var z = 4M; //decimal
var w = (string)null; //string

var is not a data type, it is simply "syntactic sugar" for "let-the-compiler-infer-at-compile-time-what-actual-type-to-use".

So, you just need to understand the following type inferences:

var x = 4; //int
var y = 4.0; //double
var z = 4M; //decimal
var w = (string)null; //string
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文