这是什么类型的显式?

Oma*_*mar 2 c# types visual-studio

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

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

var test = enemyTeam.Zip(imageList, (c, i) => new { Champion = c, Image = i });
Run Code Online (Sandbox Code Playgroud)

Test1(隐式类型到 Int 类型):


在此处输入图片说明

Test2(隐式类型到显式类型):我不能。


在此处输入图片说明

在此处输入图片说明

我也尝试过这种隐式类型但没有用:

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

Pet*_*iho 6

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

你不能给一个明确的名字。它是匿名的。有关为什么存在以及如何使用它的更多详细信息,请参阅在 C# 中使用 var 关键字var

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