有人能解释一下下面的代码吗?

本文关键字:代码 一下 能解释 | 更新日期: 2023-09-27 18:04:14

谁能解释一下下面的代码,特别是new[]

  @Html.DropDownListFor(x => x.WillAttend,new[] { 
          new SelectListItem() { Text = "Yes, I'll be there", Value = bool.TrueString},
          new SelectListItem() { Text = "No, I can't come", Value = bool.FalseString}}, "Choose an option")

new[]是否创建了一个新的选择列表?

有人能解释一下下面的代码吗?

new[]不是匿名类型,它是SelectListItem[]类型的隐式类型数组。当您使用数组初始化器添加SelectListItem类型的项时,会推断出数组(SelectListItem)的类型。

您正在使用DropDownListFor的重载。因为SelectListItem[]来源于IEnumerable<SelectListItem,所以这是可行的。您也可以使用List,例如:new List<SelectListItem> { new SelectListItem { ... }, new SelectListItem { ... } } .

代码创建了一个类型为SelectList的新数组,并向其中添加了两个新的SelectListItem项。这就是你的新下拉列表

正确,数组中的new[],列表初始化器。在这个例子中,你创建了一个数组或列表,我不知道dropdownlistfor接受的类型它有两项类型为SelectListItem

new[]是否创建了一个新的选择列表?

new[]创建一个新的Array对象。考虑DropDownListFor的第二个参数

IEnumerable<SelectListItem>,数组平滑地转换为所需的类型。

@Html.DropDownListFor()看起来像Razor视图引擎的Razor语句。该语句将生成一个HTML选择列表。这个函数的参数(()之间的东西)构成了列表的内容,在本例中,该列表是由语句new[]{...}生成的,该语句创建了一个新的数组,填充了{}中的项目,在本例中是SelectListItem s。

语句作为一个整体应该生成如下内容:

<select>
      <option value="" selected="selected" disabled="disabled">Choose an option</option>
      <option value="true">Yes, I'll be there</option>
      <option value="false">No, I can't come</option>
</select>