У меня есть упрощенная версия того, что я хочу сделать ниже. У меня есть класс Planet, который используется классом SolarSystem. Я хочу использовать цикл foreach для записи orbitTimeInDays для каждой планеты в SolarSystem.C# Перечислимый объект foreach
Ошибка CS1579 оператор Еогеасп не может работать с переменными типа «TestEnum.SolarSystem» потому что «TestEnum.SolarSystem» не содержит публичное определение «GetEnumerator»
Проблема является перечисление, Я прочитал несколько статей и вопросов о создании объектов Enumerable, но я не могу понять, как применить его к SolarSystem, чтобы я мог проверять каждую Планету, из которой она построена. (В конце концов, он будет содержать астероиды и т. Д., Так что это не только 8 планет и Плутон.)
Может кто-то, пожалуйста, помогите мне понять, как перечислить SolarSystem.
class Program
{
static void Main(string[] args)
{
SolarSystem solarSystem = new SolarSystem();
solarSystem.mercury.orbitTimeInDays = 88;
solarSystem.venus.orbitTimeInDays = 225;
// etc...
foreach (Planet planet in solarSystem)
{
Console.WriteLine("Time taken to orbit sun (in days) : " + planet.orbitTimeInDays.ToString());
}
}
}
public class Planet
{
public double distanceFromEarth { get; set; }
public int orbitTimeInDays { get; set; }
// etc...
public Planet() { }
}
public class SolarSystem
{
public Planet mercury { get; set; }
public Planet venus { get; set; }
// etc...
public SolarSystem()
{
mercury = new Planet();
venus = new Planet();
// etc...
}
}
Проблема заключается в том, что ваши планеты - это каждое отдельное свойство того же класса, вы можете сделать это, используя немного фантазии, но, в реальности, вам будет лучше со списком планет в вашей solarsystem .. возможно, некоторые другие реквизиты, то вы можете просмотреть список планет .. – BugFinder
Цикл ForEach работает на массивах и т. д., подобно циклу 'for'. Вместо этого у вас есть один класс с несколькими свойствами. –