C# 类的实例作为另一个类中的私有字段对象?怎么用?

C# 类的实例作为另一个类中的私有字段对象?怎么用?,c#,instance-variables,C#,Instance Variables,有一个定义类土星。定义类SolarSystem,该类包含Saturn类中的对象作为私有字段。类内SolarSystem:定义可以初始化私有字段的构造函数,该字段将是Saturn类中的对象 public class Saturn { private int masa; public Saturn() { masa = 0; } } 我不知道如何解决这个任务,或者它的定义不正确。有人能给我一些clu或更好的:一个代码吗?您目前有一个名为Saturn的类,它有一个类型为int

有一个定义类土星。定义类SolarSystem,该类包含Saturn类中的对象作为私有字段。类内SolarSystem:定义可以初始化私有字段的构造函数,该字段将是Saturn类中的对象

public class Saturn    
{
    private int masa;
    public Saturn() { masa = 0; }
}

我不知道如何解决这个任务,或者它的定义不正确。有人能给我一些clu或更好的:一个代码吗?

您目前有一个名为
Saturn
的类,它有一个类型为
int
的私有字段和一个公共构造函数。任务要求您定义一个名为
SolarSystem
的新类,该类包含一个类型为
Saturn
的私有字段和一个公共构造函数。在该构造函数中,类型为
Saturn
的私有字段应初始化为
new
对象


因此,您的
SolarSystem
类在结构上与您的
Saturn
类非常相似。相同的代码行数,相同的布局,相同的一切。唯一的区别是私有字段的类型和将该字段初始化为值的行。

您可以为私有字段saturn定义一个属性:

public class Saturn
{
    private int masa;
    public Saturn() { masa = 0; }
}

public class SolarSystem {
    private Saturn saturn;

    public SolarSystem(Saturn saturn)
    {
        this.saturn = saturn;
    }
}
public class Saturn    
{
    private int m_masa;
    public int masa
    {
          get { return m_masa ; }
          set { m_masa = value ;}
    }
    public Saturn() { masa = 0; }
}
value是c#中的关键字,因此如果键入:

masa = 5;

这和m_masa=5是一样的;但是,由于您的财产是公共财产,您可以从您想要的地方调用它。

对于那些只不过是代码的答案,如果不解释代码或代码的含义,通常都是不赞成的。家庭作业问题尤其如此。但毕竟这似乎是我一直在寻找的,所以谢谢你。@Cris:在Oscar的实现中需要注意的一点是,他的构造函数如何接受一个
Saturn
对象的实例作为参数,而不是在构造函数中手动实例化它。虽然您的任务没有明确要求这样做,但值得理解和调查此设计决策的影响。这是朝向面向对象设计中的依赖项反转原则迈出的一步,这表明对象应该要求为其提供依赖项,而不是在内部创建这些依赖项。简而言之,这是一个很好的设计。我对面向对象编程知之甚少。你能为我的任务提供代码解决方案的适当示例吗?这样我就可以看到区别了。克里斯:我的回答描述了任务的字面解释,即
SolarSystem
的构造函数将是无参数的,并且将在内部为私有财产实例化一个新的
Saturn
对象。示例中的
Saturn
类本身就是这种行为的一个示例。它不需要
int
,而是在内部创建一个。对于
int
等基本类型,这通常不是坏事。(事实上,在
Saturn
中甚至不需要它,因为未初始化的
int
的默认值是
0
)随着类型变得更加复杂,出现了一种需要依赖关系的模式。