Sushant298 Ответов: 1

Ienumerable интерфейс в C#


Здравствуйте, ребята, я только что узнал о интерфейсе IEnumerable и обнаружил, что мы можем перебирать как универсальные, так и не универсальные коллекции с помощью интерфейса IEnumerable, но затем просто для проверки я создал класс Customer с некоторыми атрибутами.Затем в основном методе создается массив этого класса, добавляющий несколько объектов.Затем пробежал через цикл foreach и прекрасно работал без использования интерфейса IEnumerable.Можете ли вы объяснить, может быть, мой вопрос был бы странным или глупым, но быть одним из них не в состоянии точно понять, что такое IEnumerable и когда и почему использовать интерфейс IEnumerable.Заранее спасибо, если кто-то может объяснить подробно.

public class Customer1
    {
        private String _Name, _City;
        private long _Mobile;
        private double _Amount;

        public String Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public String City
        {
            get { return _City; }
            set { _City = value; }
        }

        public long Mobile
        {
            get { return _Mobile; }
            set { _Mobile = value; }
        }
        
        public double Amount
        {
            get { return _Amount; }
            set { _Amount = value; }
        }
    }
    class IEnumerableTest
    {
        static void Main()
        {
            Customer1[] customers = new Customer1[]
            {
             new Customer1 {Name="Vithal Wadje",City="Mumbai",Mobile=99999999999,Amount=89.45 },
             new Customer1 { Name = "Sudhir Wadje", City = "Latur", Mobile = 8888888888888888888, Amount =426.00 },
             new Customer1 { Name = "Anil", City = "Delhi", Mobile = 7777777777777777777, Amount = 5896.20 }
            };

            foreach (var obj in customers)
            {
                Console.WriteLine(obj.Name + " " + obj.City + " " + obj.Mobile + " " + obj.Amount);
            }
        }
    }

What I have tried:

I have  created a class Customer with some attributes.Then in Main method created a array of that Class adding few objects.Then ran through foreach loop and worked fine without using IEnumerable Interface.

1 Ответов

Рейтинг:
0

OriginalGriff

Customer1 не реализует IEnumerable, но это не обязательно должно быть сделано в коде:

Customer1[] customers = new Customer1[] { ... };
foreach (var obj in customers)
   ...
потому что все массивы (и другие коллекции) реализуют IEnumerable.

Интерфейсы-это контракт, они говорят: "Это ты делаешь то-то и то-то, ты член клуба, и получаешь все клубные привилегии". "Это и то" - это свойства, методы и т. д., которые определены как часть интерфейса.
В случае IEnumerable вам просто нужно реализовать следующий метод:
public IEnumerator GetEnumerator()
    {
    ...
    }
И Как реализовать IEnumerable в C#[^] покажет вам, как это сделать.
Если вы это сделаете, то ваш класс может быть непосредственно использован в качестве foreach "коллекция":
foreach (MyClass mc in MyClassThatImplementsIEnumerable)
   {
   ...
   }