-4

わかりましたので、作成しようとしている単純なプログラムがあります。これには、基本的に 2 つのクラスがbirdありeggます。クラスでは、 ofとofProgramを設定します。どちらもクラスのメソッドの上で宣言されています。オブジェクトには、新しいオブジェクトをofに追加したいというメソッドがあります。しかし、親クラスから aにアクセスする方法がよくわかりません。listbirdlisteggmainProgrambirdlayEggegglistegglist

これは可能ですか?

4

2 に答える 2

0

私の理解が正しければ、親クラスと呼ばれるものは実際には親クラスではありません。birdこれは、クラスがその親クラスから継承するという意味ではありません。そのクラスで宣言されていることを意味します。このような:

class Program
{
  private class egg { }

  private static List<egg> listOfEggs;

  private class bird
  {
    public void layEgg()
    {
      // How to access listOfEggs from here?
    }
  }

  private static List<bird> listOfBirds;

  static void Main(string[] args)
  {
    // Initialise the lists, then:
    listOfBirds[0].layEgg();
  }
}

もしそうなら、答えは本当に簡単です:すべてが次のようになっているにもかかわらず、listOfBirdsクラス内で完全に見えるため、直接アクセスできます:birdprivate

  private class bird
  {
    public void layEgg()
    {
      listOfEggs.Add(new egg()); // No problem
    }
  }
于 2013-03-14T16:19:46.197 に答える
0

私は間違っているかもしれませんが、あなたのアプローチは間違っているようです。これを試して:

namespace BirdsAndEggs
{
    public class Bird
    {
        public string Name { get; set; }
        public List<Egg> Eggs { get; set; }
    }
    public class Egg
    {
        public string Size { get; set; }
    }

    public class Main
    {
        List<Bird> TheBirds = new List<Bird>();

        void main()
        {
            TheBirds.Add(new Bird()
            {
                Name = "Bird 1"
            });
            TheBirds.Add(new Bird()
            {
                Name = "Bird 2"
            });
            TheBirds.Add(new Bird()
            {
                Name = "Bird 3"
            });

            layEgg(0, "Large");
            layEgg(1, "Medium");
            layEgg(2, "Small");
        }

        void layEgg(int i, string size)
        {
            TheBirds[i].Eggs.Add(new Egg() { Size = size });
        }
    }
}

つまり、これはあなたが何を望んでいるかについての本当にランダムな推測であり、あなたが C# にどれほど精通しているかさえ知りません... :/

于 2013-03-14T16:30:09.623 に答える