私は以下でやりたいことを簡略化しました。私はSolarSystemクラスで使用されるクラスプラネットを持っています。私はforeachループを使ってSolarSystemの各惑星のorbitTimeInDaysを書きたいと思っています。C#列挙するオブジェクトforeach
エラーCS1579のforeach文はタイプ の変数に「TestEnum.SolarSystem」を操作することができない「TestEnum.SolarSystemは」「GetEnumeratorメソッド」
ため 公開定義が含まれていないため、問題は、列挙ですオブジェクトをEnumerableにするためのいくつかの記事や質問を読んだことがありますが、SolarSystemに適用する方法を考えることができないので、構築された各Planetを確認できます。 (最終的には小惑星なども含まれているので、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...
}
}
問題は、あなたの惑星が同じクラスの個々のプロパティであることです。あなたはそれを少しでも魅力的に使うことができますが、実際にはソラールシステムの惑星のリストでもっとうまくいくでしょう。 – BugFinder
'ForEach'ループは' for'ループと同様の方法で配列などに作用します。代わりに、いくつかのプロパティを持つ単一のクラスがあります。 –