C#:如何从另一个类访问'parent'类中的静态变量

时间:2013-03-14 15:57:51

标签: c# class variables

好的,我有一个我想要创建的简单程序,其中基本上有两个类 - birdegg。在Program课程中,我设置list birdlist egg - 两者都在main方法之上声明在Program课程中。 bird对象有一个名为layEgg的方法,我想将egg对象添加到list的{​​{1}}。但我不确定如何从父类访问egg

这甚至可能吗?

2 个答案:

答案 0 :(得分: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可以直接访问,因为它在类bird内完全可见,即使所有内容都是private

  private class bird
  {
    public void layEgg()
    {
      listOfEggs.Add(new egg()); // No problem
    }
  }

答案 1 :(得分: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#有多熟悉......:/