【问题标题】:What kind of type explicit is this?这是什么类型的显式?
【发布时间】:2021-09-06 14:59:20
【问题描述】:

我过去几乎一直使用隐式类型,但由于有人告诉我使用关键字var 是一种不好的做法,所以我现在尝试使用显式类型。为此,我倾向于使用快捷方式 Ctrl+. 将任何隐式类型更改为其显式类型。

尽管如此,今天我不得不在一个 Foreach 中处理两个列表。为此,我使用了.Zip() 方法。我尝试将其隐式类型更改为显式类型,但我不能。我也尝试使用我提到的快捷方式,但由于某种原因没有选项。

var test = enemyTeam.Zip(imageList, (c, i) => new { Champion = c, Image = i });

Test1(隐式转 Int 类型):


Test2(隐式到显式):我做不到。


我也尝试过这种隐式类型,但没有奏效:

IEnumerable<new {  CurrentGameParticipant Champion, PictureBox Image }> test = enemyTeam.Zip(imageList, (c, i) => new { Champion = c, Image = i });

【问题讨论】:

  • 这个“某人”有没有给你任何论据,为什么他们认为 var 是不好的做法?
  • @KlausGütter 因为它使代码更具可重复性。 (这是有道理的,但也更长/更吵)
  • 我对“它使代码更具可读性”的反驳是,如果这样做,您的变量和方法名称就不合适了。无论如何,由个人团队或开发人员决定他们对var 的感受。
  • 谁告诉过你:告诉他们var is officially recommended best practice - 尤其是像ArbitraryAbstractNonsensicalReasonFactoryProvider 这样的long 类名称,它确实 发生得很远通常,可以说var 到目前为止可读性更好。 (ReSharper/Rider 甚至提供了代码检查功能来自动更改代码以使用 var)
  • "使用关键字 var 是一种不好的做法" => 意见:除了彼得的回答之外,请参见例如部分 Item 1 Bill Wagner 和Var Keyword In C#When to Use and Not Use Variable Type var in C# 编写的Effective C#一书。

标签: c# visual-studio types


【解决方案1】:

new { Champion = c, Image = i } 是一种匿名类型,这也是var 关键字首先存在的全部原因。

您不能给出明确的名称。是匿名的。有关var 存在的原因以及如何使用它的更多详细信息,请参阅Use of var keyword in C#

您可能更喜欢使用值元组;例如(c, i) =&gt; (Champion: c, Image: i)。这类似于匿名类型,但您可以使用值元组类型显式声明变量,例如IEnumerable&lt;(CurrentGameParticipant, PictureBox)&gt; test;IEnumerable&lt;(CurrentGameParticipant Champion, PictureBox Image)&gt; test;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多