C# 类的实例作为另一个类中的私有字段对象?怎么用?
有一个定义类土星。定义类SolarSystem,该类包含Saturn类中的对象作为私有字段。类内SolarSystem:定义可以初始化私有字段的构造函数,该字段将是Saturn类中的对象C# 类的实例作为另一个类中的私有字段对象?怎么用?,c#,instance-variables,C#,Instance Variables,有一个定义类土星。定义类SolarSystem,该类包含Saturn类中的对象作为私有字段。类内SolarSystem:定义可以初始化私有字段的构造函数,该字段将是Saturn类中的对象 public class Saturn { private int masa; public Saturn() { masa = 0; } } 我不知道如何解决这个任务,或者它的定义不正确。有人能给我一些clu或更好的:一个代码吗?您目前有一个名为Saturn的类,它有一个类型为int
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
)随着类型变得更加复杂,出现了一种需要依赖关系的模式。