【问题标题】:New object initialization in C#C# 中的新对象初始化
【发布时间】:2018-10-09 23:15:02
【问题描述】:

我是 C# 新手,并试图了解对象初始化。我的问题是我可以初始化一个没有任何参数且只使用空花括号的新对象吗?这有意义吗?

例如:Classname object = new Classname {};

感谢任何帮助

【问题讨论】:

  • 微软提供了很多关于c#的详细教程和书籍。阅读here
  • 类名对象=新类名();是你如何制作一个没有参数的对象。
  • 谢谢 Poul Bak
  • 你可以试试看编译器是否允许,而不是问我们。
  • 你试过了吗?找出“我可以吗?”答案的最简单方法问题只是尝试一下。

标签: c# object initialization


【解决方案1】:

是的,您可以在没有任何参数的情况下初始化对象, 让我简单解释一下, 一个对象只是一个类的副本,它具有该类中所有公共方法和字段的副本。 我们使用对象来访问类的成员 所以让我们假设你有两个类 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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2016-02-09
    • 2017-02-18
    • 2010-11-09
    相关资源
    最近更新 更多