こんにちは私はコンストラクターでいくつかのことをセットアップする方法を考えていましたが、オブジェクトが作成された直後まで待機させます。私は、C ++とQTの時代に沿って、オブジェクトが構築されるとすぐにセットアップメソッドを起動する0秒間のシングルショットタイマーを作成することを考えています。C#でそれを行うことはできますか?
コンストラクターで行うすべての作業を、より良い方法があるかどうかを確認するだけでかまいません。
こんにちは私はコンストラクターでいくつかのことをセットアップする方法を考えていましたが、オブジェクトが作成された直後まで待機させます。私は、C ++とQTの時代に沿って、オブジェクトが構築されるとすぐにセットアップメソッドを起動する0秒間のシングルショットタイマーを作成することを考えています。C#でそれを行うことはできますか?
コンストラクターで行うすべての作業を、より良い方法があるかどうかを確認するだけでかまいません。
C#では、コンストラクターを実行する前にオブジェクト全体が作成されます。すべてのフィールドは、デフォルト値または初期値(存在する場合)で初期化されます。何かを遅らせたい場合は、遅延初期化の使用を検討してください。
コンストラクターに自分のものを入れるだけで何が問題になるのかわかりません-できないことは何もありません。たぶん、あなたがこれをやりたい理由/あなたが抱えている問題の例は、私たちがあなたにもっと適切な答えを与えることを可能にするでしょう。
ただし、本当にコードを遅らせる必要がある場合は、
public constructor()
{
Task.Factory.StartNew(()=>
{
Thread.Sleep(...delay...);
//delayed code
});
}
求めていることを実行する1つの方法は、目的のオブジェクトを構築する静的メソッドを用意することです。
class MyObject {
private MyObject() {
}
private void Setup() {
// do some configuration here
}
public static MyObject CreateObject() {
MyObject obj = new MyObject();
obj.Setup();
return obj;
}
}
したがって、クラスの実際のコンストラクターを使用することはありませんが、代わりに、オブジェクトを作成すると同時にそれをセットアップする静的メソッドを呼び出します。ただし、呼び出し元の観点からの効果は同じであるため、なぜこれを実行するのかわかりません。オブジェクトが作成され、そのセットアップが完了するまで待って、オブジェクトを使用できるようにします。