你好,我想知道如何在构造函数中设置几个东西,但让它等到创建对象之后。我正在考虑我的C ++和QT日期,当我创建一个单秒计时器0秒时,一旦构造了对象就会激活我的设置方法。我可以用C#做到吗?
我不介意在构造函数中完成所有工作,只是看看是否有更好的方法。
答案 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;
}
}
因此,您永远不会使用类的实际构造函数,而是调用创建对象并同时设置它的静态方法。我不知道为什么你会这样做,因为从调用者的角度来看效果是相同的 - 你等到创建对象并完成其设置才能使用它。