この質問が理にかなっているのか、それとも素朴な質問なのか分かりませんが、満足のいく答えを見つけることができませんでした。静的クラスを継承した
複数の静的なクラス間でコードを共有したいと考えています。静的クラスのための抽象基底クラスの "等価"がありますか(つまり、別の静的クラスを継承することはできますか?)そうでない場合は、どうしてですか?抽象基本クラスの場合と同様に、複数の静的クラス間でコードを共有する別の方法はありますか?
また、静的クラスと「密封」クラスはどのように比較されますか?
この質問が理にかなっているのか、それとも素朴な質問なのか分かりませんが、満足のいく答えを見つけることができませんでした。静的クラスを継承した
複数の静的なクラス間でコードを共有したいと考えています。静的クラスのための抽象基底クラスの "等価"がありますか(つまり、別の静的クラスを継承することはできますか?)そうでない場合は、どうしてですか?抽象基本クラスの場合と同様に、複数の静的クラス間でコードを共有する別の方法はありますか?
また、静的クラスと「密封」クラスはどのように比較されますか?
あなたは大丈夫です。リフレクションはstatic
クラスはabstract
とsealed
の両方であることが表示されます:
public static class MyStaticTest {
}
...
// I'm abstract
Console.WriteLine(typeof(MyStaticTest).IsAbstract ? "I'm abstract" : "");
、あなたは(時エラーをコンパイル)インスタンスを作成することができない理由です:new MyStaticTest();
。
// I'm sealed
Console.WriteLine(typeof(MyStaticTest).IsSealed ? "I'm sealed" : "");
ので、あなたは(時エラーをコンパイル)それを継承することはできません:public class MyClass: MyStaticTest {..}
しかし、反射がどのstatic
クラスは、同様sealed
であることが表示されます。したがって、static
クラスで行うことは、static
メンバー(静的フィールド、プロパティ、メソッドなど)を宣言することです。
'任意の抽象クラスも同様に封印されています.'抽象クラスではなく静的クラスを意味すると思います。 – Jonesopolis
@Jonesopolis:タイプミスで申し訳ありません。「静的」(「abstact」ではない)クラスは「封印された」クラスです。 –
大変申し訳ありませんが、とても役に立つ回答でした – Jonesopolis
abstractキーワードを使用すると、不完全で派生クラスで実装する必要があるクラスおよびクラスメンバーを作成できます。ただし、sealedキーワードを使用すると、以前に仮想としてマークされたクラスまたはクラスメンバーの継承を防止できます。
私はそれが完全だと思います。
要約と密封キーワード主な役割を果たします。 – Bman
正確に_is_の質問はありますか? 'sealed'クラスを継承することはできません。これは、' sealed'キーワードが存在するすべての理由です。 –
'sealed'クラスは、定義上、あなたが継承できないクラスです。あなたの質問は何ですか? – npinti
"sealed修飾子は、他のクラスの継承を防ぎます" https://msdn.microsoft.com/en-gb/library/88c54tsw.aspx "抽象クラスの実装を提供するクラスによって抽象クラスを継承する必要がありますメソッドまたはプロパティ "と呼びます。 –