static void MadeRightStack() { //теперь обязательно нужно указывать тип MyStack2 <int> ms = new MyStack2 <int>(); ms.Push2(1); ms.Push2(2); ms.Push2(3); while (ms.Count != 0) { Console.WriteLine(ms.Peek2()); ms.Pop2(); } }
static void AddIEnumerable() { //проблемы нашего MyStack2 MyStack2 <int> ms = new MyStack2 <int>(); ms.Push2(1); ms.Push2(2); ms.Push2(3); //выдаёт ошибку на foreach //нужно создать интерфейс INumerable //решение в MyStack foreach (var item in ms) { Console.WriteLine(item); } //без этой переделки пришлось бы var enumerat = ms.GetEnumerator(); while (enumerat.MoveNext()) { Console.WriteLine(enumerat.Current); } //его спеацильно скрывают, но //чтобы вызвать метод без T //IEnumerable enumer = (IEnumerable)ms; while (ms.Count != 0) { Console.WriteLine(ms.Peek2()); ms.Pop2(); } }