コーディングの練習について質問があります。初期化できないクラスを作成したい。3つのオプションがあると思います:
- 抽象修飾子
- 静的修飾子
- プライベート コンストラクター
すべてのプロパティとメソッドに 'static' という名前を付けなければならないという理由だけで、静的クラスを作成したくありません。見た目が煩雑です (そして、'this' キーワードを使用できません)。
MSDNによると:
クラス宣言で抽象修飾子を使用して、クラスが他のクラスの基本クラスであることのみを意図していることを示します。
編集このクラスから継承するものはありません。
ただし、それは解決策になります(ただし、この状況で使用するのは間違っているようです)。
または、プライベート コンストラクターを作成して、クラスを初期化できないようにすることもできます。
これが理由の理由を説明するのに役立つ場合: クラスは、ワークフロー プロセスを開始する責任があります。何も返されないため、初期化する必要はありません。「開始」するだけで済みます。
デモコード
class Program
{
static void Main(string[] args)
{
WorkFlow wf = new WorkFlow(); // this will error which is fine!
ComplexObject co = new ComplexObject();
WorkFlow.Begin(co);
Console.ReadKey();
}
}
public class WorkFlow
{
private WorkFlow()
{
//private to prevent initialization but this feels wrong!
}
public static void Begin(ComplexObject co)
{
//code to begin the workflow
}
}