C#中的新对象初始化

时间:2018-10-09 23:15:03

标签: c# object initialization

我是C#的新手,正在尝试了解对象初始化。我的问题是我可以在没有任何参数的情况下使用空花括号初始化一个新对象吗?有道理吗?

例如:Classname object = new Classname {};

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

是的,您可以初始化没有任何参数的对象, 让我简单地解释一下 一个对象只是一个类的副本,它具有该类内部所有公共方法和字段的副本。 我们使用对象访问类的成员 所以假设您有X和Y两类 并且您希望能够在类Y中使用类X的非静态公共成员 那么在Y类中,您可以实例化X类中的对象

X myObjectName = new X();

那么构造器部分(括号)呢? 这仅是为了初始化在X类构造函数中定义的字段,换句话说,您可能希望访问X类中的公共成员,但希望它们在访问它们之前具有某些值,因此在X类中,您应该构造一个构造函数,基本上说从我的类实例化的任何对象都应初始化以下字段,例如,在类X中,您可以拥有此构造函数

public X (int num) {
this.num = num;
}

这基本上意味着,当您从类X实例化一个对象时,还需要传递一个整数以初始化类X中的字段num。但是,您必须知道,无论用什么值初始化num,此值都只是您的对象中存在但其他对象(而不是类本身)中存在的副本 例如,您可以在类Y中创建类X中的以下两个对象

X object_1 = new X(5);
X object_2 = new X(12);

这并不意味着您在类X中更改了num字段的值,而是意味着您创建了两个对象,这些对象是该类的一个副本,并且每个副本具有不同的num值。 因此,可以创建一个对象而无需初始化任何字段的原因是,例如,如果您仅想访问类方法,或者您想要字段的默认值。顺便说一句,您可以重载构造函数,这意味着您可以有多个构造函数,例如,一个不需要参数的构造函数,因此,当您要实例化不带任何参数的对象时,可以使用该构造函数;可以接受整数的对象可以使用该构造函数;您要在实例化对象示例时初始化num字段的值

public X () {

}

,另一个是

public X(int num) {
this.num = num
}

然后在Y类中,您可以做到这一点

X object_1 = new X();
X object_2 = new X(15);

我希望我给你一个很好的解释