Как l oop через Generi c Класс / Список - PullRequest
0 голосов
/ 27 марта 2020

Привет, я изучаю Generics через MSDN здесь , и я хочу сделать foreach l oop для отображения данных в console.writeline.

Я пытался сделать foreach l oop как показано ниже, но это не работает.

// Declare the generic class.
public class GenericList<T>
{
    public void Add(T input) { }
}
class TestGenericList
{
    private class ExampleClass { }
    static void Main()
    {
        // Declare a list of type int.
        GenericList<int> list1 = new GenericList<int>();
        list1.Add(150);

        // Declare a list of type string.
        GenericList<string> list2 = new GenericList<string>();
        list2.Add("Toyota");

        // Declare a list of type ExampleClass.
        GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
        list3.Add(new ExampleClass());
    }
}



        foreach (GenericList<T> item in list2.ToString().ToList())
        {
            Console.WriteLine(item);   // NOT WORKING !!!!
        }

1 Ответ

0 голосов
/ 27 марта 2020

Во-первых, вызвав метод ToString() для list2, вы получите имя типа вашего объекта, потому что вы не создали собственную реализацию метода ToString(). Итак, вы пытаетесь перечислить через буквы строки «AppName.GenericList». К сожалению, буквы относятся к типу 'char', а не к GenericList.

Во-вторых, у метода Add нет внутреннего механизма - элементы, которые вы "добавляете" в свой список, на самом деле нигде не добавляются. Метод public void Add(T input) { } ничего не делает (вы должны заполнить скобки). GenericList на этом этапе не сохраняет никаких данных.

В-третьих, вы не можете перечислить через ваш GenericList, потому что вы не реализовали метод GetEnumerator. Только тогда вы сможете использовать ключевое слово foreach для объектов вашего типа.

Многие из этих проблем будут решены к концу учебника по предоставленной вами ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...