2016-08-29 2 views
-5

Я новичок в C#, и теперь я читаю о функциях дженериков. Но я не могу понять, что не так? У меня есть, например, эта функция:Общий возврат функции Список C#

public List<T> CutText (List<T> list) 
{ 
     foreach (var a in list) 
     { 
       a.Text = "Yes"; 
     } 

     return list; 
} 
+0

Вы прочитали сообщение об ошибке? Как вы думаете, 'T'? – SLaks

+0

Прочтите эту ссылку для справки: [Как вернуть общую коллекцию списков в C#?] (Http://stackoverflow.com/questions/1937301/how-to-return-a-generic-list-collection-in-c) , В принципе, вы не можете использовать общие параметры функции и типы возвращаемых данных, вам нужно либо объявить пользовательский класс, либо использовать его, либо использовать список строк. Если вы хотите, я могу привести несколько примеров в качестве ответа., –

+0

имя T не найдено –

ответ

0

Что такое свойство «Текст»? Вам нужно определить ограничение, чтобы общий знает, чего ожидать. Например, интерфейс ITextControl является интерфейсом в структуре webforms, и если вы определили его как следующее, ваш код будет работать.

public List<T> CutText<T>(List<T> list) 
    where T: ITextControl 

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

2
  1. Ваша функция не является общей. Это просто некорректная не компилируемая функция, которая возвращает список неизвестного типа Т. Либо ваша функция, либо ваш класс должны также иметь <T> в своем объявлении, чтобы сделать его общим.

    Например, так:

    public List<T> CutText<T>(List<T> list) 
    { 
        foreach (var a in list) 
        { 
         a.Text = "Yes"; 
        } 
    
        return list; 
    } 
    
  2. Даже если вы пометить его как общие, теперь типа T не имеет Text свойства до T не указан более точно класса или интерфейс, имеющий Text свойства:

    public List<T> CutText<T>(List<T> list) where T : TextBox 
    

    или

    public List<T> CutText<T>(List<T> list) where T : IAnyInterfaceHavingTextProperty 
    
+0

Из любопытства, почему downvote? Это правильный ответ. – EJoshuaS

+0

Мне было интересно то же самое на Ельдаре и моем ... –

Смежные вопросы