C# 从非父类接收信息

C# 从非父类接收信息,c#,class,inheritance,C#,Class,Inheritance,我有一个班叫兰德,是学校的家长班。还有一个独立的等级城市,包含所有土地等级的总人口 重点是学校不能从城市继承信息,有没有一种方法可以让我从班级学校获取城市信息 我的尝试是私人城市=新城;然后是城市。人口来提取人口信息,但这不起作用。有什么建议吗?你似乎混淆了is-a继承和has-a组合。学校位于城市,而城市又居住在一个国家或地区。在我看来,这是一个合理的设计: class Land { public string Name { get; private set; } publi

我有一个班叫兰德,是学校的家长班。还有一个独立的等级城市,包含所有土地等级的总人口

重点是学校不能从城市继承信息,有没有一种方法可以让我从班级学校获取城市信息

我的尝试是私人城市=新城;然后是城市。人口来提取人口信息,但这不起作用。有什么建议吗?

你似乎混淆了is-a继承和has-a组合。学校位于城市,而城市又居住在一个国家或地区。在我看来,这是一个合理的设计:

class Land
{
    public string Name { get; private set; }

    public Land(string name)
    {
        this.Name = name;
    }
}

class City
{
    public string Name { get; private set; }
    public Land Land { get; private set; }
    public int Population { get; private set; }

    public City(string name, int population, Land land)
    {
        this.Name = name;
        this.Population = population;
        this.Land = land;
    }
}

class School
{
    public string Name { get; private set; }
    public City City { get; private set; }

    public School(string name, City city)
    {
        this.Name = name;
        this.City = city;
    }
}
您可以通过以下方式使用此功能:

var land = new Land("Foo");
var city = new City("BarCity", 9001, land);
var school = new School("BazSchool", city);
现在,您可以通过school.city.population访问学校所在城市的人口

如您所见,我们现在有三个类包含Name属性。您可以将其提取到一个新的抽象类中,例如NamedEntity,并让所有其他三个类继承自该类,因为每个类都是一个命名实体


但正如我从评论中得到的,这个问题是从一个编程作业中提出的,目的是教你这些原则。然而你却声称没有时间去学习。您打算如何完成下一个编程作业?

具体的信息不属于整个类,而是属于该类的一个实例。阶级城市可能有一个不动产人口,但你不能普遍知道它的价值是什么。一个城市的人口可能为1000000,而另一个城市的人口可能为3000000。你知道这个事实吗?看了你的问题后,你似乎没有。我建议你读一本基本的编程书来学习这些概念。是的,我同意,但不幸的是目前我没有时间这么做。如果你能帮助我,我将不胜感激,这个作业五小时后就要交了。城市阶层的可变人口是公共的,如果这有帮助的话。我不能。充分理解类和实例之间的差异,并以反映这些知识的方式重新表述您的问题,这是实现这一点的先决条件。就目前情况而言,不可能给出有意义的答案。难道这不应该是公共城市{get;private set;}的一致性吗?@CodeCaster谢谢你的回答@NikitaGusev如果有人发布了回答您问题的答案,您应该将其标记为已接受。请看一看——它非常简短,切中要害。@JohnH我想OP还没有足够的声誉来迅速接受答案。不管怎样,OP,你能回答我的问题吗?@CodeCaster这更像是一个一般性的评论,浏览了OP的个人资料。