您好,我想知道如何在构造函数中设置几件事,但要等到对象创建后。我正在按照我的 C++ 和 QT 天的思路思考,我将创建一个 0 秒的单次计时器,一旦构建对象就会触发我的设置方法。我可以在 C# 中做到这一点吗?
我不介意做我在构造函数中所做的所有工作,只是看看是否有更好的方法。
您好,我想知道如何在构造函数中设置几件事,但要等到对象创建后。我正在按照我的 C++ 和 QT 天的思路思考,我将创建一个 0 秒的单次计时器,一旦构建对象就会触发我的设置方法。我可以在 C# 中做到这一点吗?
我不介意做我在构造函数中所做的所有工作,只是看看是否有更好的方法。
在 C# 中,整个对象是在执行构造函数之前创建的 - 所有字段都使用它们的默认值或初始值(如果有)进行初始化。如果您想延迟某些事情,请考虑使用延迟初始化。
我不确定将你的东西放在构造函数中的问题是什么 - 你无能为力。也许您为什么要这样做/您遇到什么问题的一个例子可以让我们给您一个更合适的答案。
虽然如果你真的需要延迟代码,
public constructor()
{
Task.Factory.StartNew(()=>
{
Thread.Sleep(...delay...);
//delayed code
});
}
One way to do what you are asking is to have a static method that constructs the desired object:
class MyObject {
private MyObject() {
}
private void Setup() {
// do some configuration here
}
public static MyObject CreateObject() {
MyObject obj = new MyObject();
obj.Setup();
return obj;
}
}
Thus, you never use the class' actual constructor but instead invoke the static method that creates the object and sets it up at the same time. I am not sure why you would want to do this though, since the effect from the point of view of the caller is the same -- you wait until the object is created and its setup is complete to be able to use it.