13

有些函数只接受数组作为参数,但您想为它们分配一个对象。例如,要为 a 分配主键列,DataTable我这样做:

DataColumn[] time = new DataColumn[1];
time[0] = timeslots.Columns["time"];
timeslots.PrimaryKey = time;

这看起来很麻烦,所以基本上我只需要将 a 转换DataColumnDataColumn[1] array。有没有更简单的方法来做到这一点?

4

4 回答 4

23

您可以使用数组初始值设定项语法编写它:

timeslots.PrimaryKey = new[] { timeslots.Columns["time"] }

这使用类型推断来推断数组的类型,并创建一个 timeslots.Columns["time"] 返回的任何类型的数组。

如果您希望数组是不同的类型(例如超类型),您也可以明确表示

timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] }
于 2013-09-19T03:47:33.610 回答
7

您也可以使用数组初始化器在一行中编写:

timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] };

看看这个:所有可能的 C# 数组初始化语法

于 2013-09-19T03:47:23.913 回答
2
timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] };
于 2013-09-19T03:47:53.747 回答
2

根据上面的答案,我创建了这个扩展方法,它非常有用,并且节省了我很多打字时间。

/// <summary>
/// Convert the provided object into an array 
/// with the object as its single item.
/// </summary>
/// <typeparam name="T">The type of the object that will 
/// be provided and contained in the returned array.</typeparam>
/// <param name="withSingleItem">The item which will be 
/// contained in the return array as its single item.</param>
/// <returns>An array with <paramref name="withSingleItem"/> 
/// as its single item.</returns>
public static T[] ToArray<T>(this T withSingleItem) => new[] { withSingleItem };
于 2019-05-15T13:51:28.930 回答