2013-08-23 3 views
0

Я пытаюсь сделать это:Создание IEnumerable Т в методе заголовка

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<T>> rows) 
{ 

Или:

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<var>> rows) 
{ 

Оба, которые дают ошибки. Раньше у меня было это:

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<string>> rows) 
{ 

Все было в порядке; за исключением, в настоящее время, мне нужно изменить rows от <string> к <var>, поскольку я буду иметь строки, даты, Интс и т.д. Изначально я думал, что только буду иметь струнные ...

Спасибо за ваши советы.

+0

Я думаю, вам нужно прочитать, что такое 'var'. –

+0

@ Pierre-LucPineault В принципе, мне нужно изменить IEnumerable на переменный тип. У меня не будет только строк; но у меня будут даты, ints и т. д. – user1477388

+0

Да Я знаю, что вам нужно, но посмотрите, как использовать 'var'. На самом деле это не так, как вы думаете. –

ответ

1
public static BatchInfo CreateBatch(IEnumerable<IEnumerable<object>> rows) 
{ 
+0

Спасибо, это работает. – user1477388

+1

@ user1477388 вам может потребоваться проверить тип, чтобы вы могли обработать его соответствующим образом, но да, он должен работать. – wilso132

1

var не является типом. Это ключевое слово, которое используется для implicit typing, и оно используется только для уменьшения избыточности при объявлении переменных. Поскольку это не тип, это означает, что вы не можете использовать его в качестве своего общего параметра.

Я предполагаю, что вы ищете либо object или dynamic (.NET 4+ только)

public static BatchInfo CreateBatch(IEnumerable<IEnumerable<object>> rows) 
public static BatchInfo CreateBatch(IEnumerable<IEnumerable<dynamic>> rows) 

Оба они могут делать то, что вы хотите, но это некрасиво и, вероятно, вызовет много вопросов для вы. Я предположил бы, вероятно, создание разных методов для каждого типа, но я не совсем уверен, что вы пытаетесь сделать.

Общий параметр метод может также работать

public static BatchInfo CreateBatch<T>(IEnumerable<IEnumerable<T>> rows) 
4
public static BatchInfo CreateBatch<T>(IEnumerable<IEnumerable<T>> rows) 
{ 

Я думаю, что вы имели право идею с IEnumerable<IEnumerable<T>>, но вы должны сделать заявление метод родовое, а также.