C# 实例化对象的不同方法
实例化如下对象的新实例之间有什么区别:C# 实例化对象的不同方法,c#,oop,C#,Oop,实例化如下对象的新实例之间有什么区别: public class MyClass { private Order order = new Order(); public void MethodOne() { order.CreateOrder(); } public void MethodTwo() { order.RemoveOrder(); } public void Dispose();
public class MyClass
{
private Order order = new Order();
public void MethodOne()
{
order.CreateOrder();
}
public void MethodTwo()
{
order.RemoveOrder();
}
public void Dispose();
{
order.Dispose();
}
}
这是:
public class MyClass
{
private Order order;
public MyClass()
{
order = new Order();
}
public void MethodOne()
{
order.CreateOrder();
}
public void MethodTwo()
{
order.RemoveOrder();
}
public void Dispose();
{
order.Dispose();
}
}
MethodOne和MethodTwo仍然使用同一个对象,对吗?无论我使用哪种方式?Imho,所提到的构造都没有真正的区别。这为对象的顺序提供了一个默认值
private Order order = new Order();
假设您的类有几个构造函数,使用它们中的任何一个进行实例化仍然会使您的顺序
对象初始化
如果在构造函数中初始化对象,则对象
顺序
是空引用,直到您自己初始化它为止(就像在构造函数中一样)
现在请记住,如果您添加了另一个构造函数,您将必须初始化对象顺序
,或者调用默认构造函数,或者像您现在这样初始化:
public class MyClass
{
private Order order;
public MyClass()
{
order = new Order();
}
public MyClass(string name)
: this() // either call the default constructor
{
// or initialize explicitely
order = new Order();
}
}
实际上,上述情况是相同的。主要的区别在于MyClass是否有多个构造函数。然后,您需要确保将代码添加到每个构造函数中(或调用简单构造函数),而如果在delcaration中设置了代码,则无论您使用哪个构造函数,都会对其进行初始化。请添加语言标记。(Java?)我认为这是这个问题的重复:在这两种情况下,您都可以将readonly添加到order声明中。关于多个构造函数的观点很好,谢谢您的回答!