シングルトンクラスが常にC#で封印されているのはなぜですか?
封印されたキーワードは、クラスを継承できないことを意味します。コンストラクターをprivateと宣言すると、クラスのインスタンスを作成できなくなります。
プライベートコンストラクターを使用して基本クラスを作成できますが、それでもその基本クラスから継承し、いくつかのパブリックコンストラクターを定義して、その基本クラスを効果的にインスタンス化します。
コンストラクターは継承されません(したがって、派生クラスには、基本クラスが継承しているという理由だけですべてのプライベートコンストラクターが含まれるわけではありません)。その派生クラスは、常に基本クラスコンストラクターを最初に呼び出します。
クラスに封印済みのマークを付けると、誰かがクラスから継承できなくなるため、慎重に作成されたシングルトンクラスを簡単に回避できなくなります。
例
static class Program {
static void Main(string[] args){
Singleton fromStudent = Singleton.GetInstance;
fromStudent.PrintDetails("From Student");
Singleton fromEmployee = Singleton.GetInstance;
fromEmployee.PrintDetails("From Employee");
Console.WriteLine("-------------------------------------");
Singleton.DerivedSingleton derivedObj = new Singleton.DerivedSingleton();
derivedObj.PrintDetails("From Derived");
Console.ReadLine();
}
}
public class Singleton {
private static int counter = 0;
private static object obj = new object();
private Singleton() {
counter++;
Console.WriteLine("Counter Value " + counter.ToString());
}
private static Singleton instance = null;
public static Singleton GetInstance{
get {
if (instance == null)
instance = new Singleton();
return instance;
}
}
public void PrintDetails(string message){
Console.WriteLine(message);
}
public class DerivedSingleton : Singleton {
}
} -
C#のコンソールクラス
C#のConsoleクラスは、コンソールアプリケーションの標準の入力、出力、およびエラーストリームを表すために使用されます。 C#のコンソールクラスプロパティの例をいくつか見てみましょう- Console.CursorLeftプロパティ C#でコンソールのCursorLeftを変更するには、Console.CursorLeftプロパティを使用します。 例 例を見てみましょう- using System; class Demo { public static void Main (string[] args) { Cons
-
なぜクラスを作成するのですか?
前回の記事に続いて、なぜnilを使用するのか、私たちが当たり前と思っている他のことについてこの質問をするのは良い考えだと思いました。 いいね… 醜いコードの巨大なブロブを1つだけ持つのではなく、なぜクラスを使用するのですか? 基本的なレベルでは、クラスを使用してコードとデータを論理ユニットに編成します。 しかし、それだけではありません。 クラスを使用すると、抽象化を作成できます 。 抽象化とは何ですか? 毎日、1分ごとに抽象化を使用します。 キーボード 私はこれを入力しています: ケーブル チェリーMXブラックスイッチ すべてをまとめるプラスチックケース 電気信号をコンピュータ