2016-10-17 4 views
-3

DateTime конструктор требует 6 аргументов:Преобразовать массив в списке аргументов

DateTime date1 = new DateTime(2008, 1, 1, 6, 32, 0); 

Теперь у меня есть

int[] dr = new int[]{2008, 1, 1, 6, 32, 0}; 

Как я могу «преобразовать» этот массив в списке аргументов - что-то вроде DateTime date1 = new DateTime(dr);?

+0

'нового DateTime (д-р [0], д-р [1], д-р [2] ....) '? –

+0

это то, на что вы можете легко найти ответ, если вы делаете простой поиск в google в 'new DateTime', работает ли google с вашего текущего региона – MethodMan

+1

Я не понимаю, что downvoting/vote закрывается здесь: ясно, что OP * знает * правильную подпись конструктора; он просто хочет знать, есть ли способ «развернуть» массив на шесть отдельных параметров. Тот факт, что C# не предоставляет такой «магии», недостаточно, чтобы проголосовать за вопрос. – dasblinkenlight

ответ

3

Вы не можете сделать это так, потому что конструктор не принимает массив; он принимает шесть отдельных параметров. Прямолинейный подход разрушения массива друг от друга вручную должен работать, хотя:

var date1 = new DateTime(dr[0], dr[1], dr[2], dr[3], dr[4], dr[5]); 

Если вы должны сделать это в нескольких местах в вашем коде, сделать вспомогательный метод, чтобы скрыть этот код:

static class DateHelper { 
    public DateTime MakeFromComponents(int[] dr) { 
     return new DateTime(dr[0], dr[1], dr[2], dr[3], dr[4], dr[5]); 
    } 
} 
... 
var date1 = DateHelper.MakeFromComponents(dr); 
+1

Большое спасибо; Мне нужно делать это много раз. Вспомогательный метод «помогает». – AAsk

+0

Это не похоже на некоторые другие (динамические) языки, где массив (или, скорее, кортеж) можно передать прямо в список аргументов. –

1

Некоторые вещи не так сложно, как это кажется ...

DateTime date1 = new DateTime(dr[0], dr[1], dr[2], dr[3], dr[4], dr[5]) 

Просто передайте каждому элементу в массиве в соответствующий параметр конструктора.

1
DateTime date1 = new DateTime(dr[0], dr[1], dr[2], dr[3], dr[4], dr[5]);