有些函数只接受数组作为参数,但您想为它们分配一个对象。例如,要为 a 分配主键列,DataTable
我这样做:
DataColumn[] time = new DataColumn[1];
time[0] = timeslots.Columns["time"];
timeslots.PrimaryKey = time;
这看起来很麻烦,所以基本上我只需要将 a 转换DataColumn
为DataColumn[1]
array。有没有更简单的方法来做到这一点?
您可以使用数组初始值设定项语法编写它:
timeslots.PrimaryKey = new[] { timeslots.Columns["time"] }
这使用类型推断来推断数组的类型,并创建一个 timeslots.Columns["time"] 返回的任何类型的数组。
如果您希望数组是不同的类型(例如超类型),您也可以明确表示
timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] }
您也可以使用数组初始化器在一行中编写:
timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] };
看看这个:所有可能的 C# 数组初始化语法
timeslots.PrimaryKey = new DataColumn[] { timeslots.Columns["time"] };
根据上面的答案,我创建了这个扩展方法,它非常有用,并且节省了我很多打字时间。
/// <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 };