实例化对象的不同方法

时间:2012-02-28 10:57:44

标签: c# oop

实例化对象的新实例之间有什么区别:

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仍然使用相同的对象吗?无论我用哪种方式?

3 个答案:

答案 0 :(得分:2)

这为对象order提供了默认值。

private Order order = new Order();

想象一下,你的类有几个构造函数,使用它们中的任何一个进行实例化仍会使你的order对象初始化。


如果在构造函数中初始化对象,则对象order是一个空引用,直到您自己初始化它(就像在构造函数中一样)。

现在请记住,如果你添加另一个构造函数,你必须通过调用默认构造函数或者像你正在做的那样初始化来初始化对象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();
    }

}

答案 1 :(得分:1)

在实践中,上述内容将是相同的。不同的主要时间是MyClass是否有多个构造函数。然后你需要确保你为每个代码添加代码(或者调用简单的构造函数),而如果它在delcaration中设置,那么无论你使用哪个构造函数,它都将被初始化。

答案 2 :(得分:0)

Imho,所提到的构造没有真正的区别。