C#构造函数中的延迟设置

时间:2012-10-15 20:53:59

标签: c#

你好,我想知道如何在构造函数中设置几个东西,但让它等到创建对象之后。我正在考虑我的C ++和QT日期,当我创建一个单秒计时器0秒时,一旦构造了对象就会激活我的设置方法。我可以用C#做​​到吗?

我不介意在构造函数中完成所有工作,只是看看是否有更好的方法。

3 个答案:

答案 0 :(得分:4)

在C#中,在执行构造函数之前创建了整个对象 - 所有字段都使用其默认值或初始值(如果有)进行初始化。如果您想延迟某些内容,请考虑使用lazy initialization

答案 1 :(得分:2)

我不确定将你的东西放在构造函数中是什么问题 - 你什么都做不了。也许你想做这个/你有什么问题的例子可以让我们给你一个更合适的答案。

虽然如果你真的需要延迟代码,

public constructor()
{
    Task.Factory.StartNew(()=>
    {
        Thread.Sleep(...delay...);
        //delayed code
    });
}

答案 2 :(得分:0)

你要问的一种方法是使用构造所需对象的静态方法:

class MyObject {
    private MyObject() {

    }

    private void Setup() {
        // do some configuration here
    }

    public static MyObject CreateObject() {
        MyObject obj = new MyObject();
        obj.Setup();
        return obj;   
    }
}

因此,您永远不会使用类的实际构造函数,而是调用创建对象并同时设置它的静态方法。我不知道为什么你会这样做,因为从调用者的角度来看效果是相同的 - 你等到创建对象并完成其设置才能使用它。