Преобразование объекта в один элемент массива объекта (С#)

Некоторые функции принимают только массивы как аргументы, но вы хотите назначить им один объект. Например, чтобы назначить столбец первичного ключа для DataTable, я делаю это:

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

Это кажется громоздким, поэтому в основном мне нужно преобразовать DataColumn в массив DataColumn[1] . Есть ли более простой способ сделать это?

Ответ 1

Вы можете написать его с помощью синтаксиса инициализатора массива:

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

Это использует вывод типа для вывода типа массива и создания массива любых временных интервалов типа. Возвращаются колонки [ "time" ].

Если вы предпочитаете, чтобы массив был другого типа (например, супертип), вы также можете сделать это явно

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

Ответ 3

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

Ответ 4

Опираясь на ответы выше, я создал этот метод расширения, который очень полезен и экономит мне много печатания.

/// <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 };