it-swarm.com.de

Statische und versiegelte Klassenunterschiede

  1. Gibt es eine Klasse, die in einer statischen Klasse implementiert werden kann? meint:

    static class ABC : Anyclass
    
  2. Gibt es eine Klasse, die sowohl in der versiegelten als auch in der statischen Klasse vererbt werden kann?
    meint:

    static class ABC : AClass {}
    

    Und

    sealed class ABC : AClass {}
    

Darf ich mich einigermaßen irren?

140
Saurabh Mahajan

Dies kann Ihnen helfen:

+--------------+---+-------------------------+------------------+---------------------+
|  Class Type  |   | Can inherit from others | Can be inherited | Can be instantiated | 
|--------------|---|-------------------------+------------------+---------------------+
| normal       | : |          YES            |        YES       |         YES         |
| abstract     | : |          YES            |        YES       |         NO          |
| sealed       | : |          YES            |        NO        |         YES         |
| static       | : |          NO             |        NO        |         NO          |
+--------------+---+-------------------------+------------------+---------------------+
625

In einfachen Worten

Statische Klasse

Eine Klasse kann als statisch deklariert werden, was darauf hinweist, dass sie nur statische Elemente enthält. Es ist nicht möglich, Instanzen einer statischen Klasse mit dem neuen Schlüsselwort zu erstellen. Statische Klassen werden automatisch von der Common Language Runtime (CLR) von .NET Framework geladen, wenn das Programm oder der Namespace, der die Klasse enthält, geladen wird.

Siegelklasse

Eine versiegelte Klasse kann nicht als Basisklasse verwendet werden. Versiegelte Klassen werden hauptsächlich verwendet, um eine Ableitung zu verhindern. Da sie niemals als Basisklasse verwendet werden können, können einige Laufzeitoptimierungen das Aufrufen versiegelter Klassenmitglieder etwas beschleunigen.

37
PaRiMaL RaJ

Sie können eine sealed -Klasse von einer anderen Klasse erben lassen, aber Sie können nicht von eine sealed -Klasse erben:

sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass     // won't compile

Eine static Klasse kann nicht von anderen Klassen erben.

18
C.Evenhuis

Einfache Antwort ist ein versiegelte Klasse kann nicht als Basisklasse verwendet werden.

Ich versuche Ihnen zu zeigen, dass Sealed Class eine abgeleitete Klasse im folgenden Code ist

 public sealed class SealedClass : ClassBase
{
    public override void Print()
    {
        base.Print();
    }
}

und eine andere versiegelte Funktion ist nur mit einer Instanz davon zugänglich. (Sie können nicht davon erben.)

 class Program
{
    static void Main(string[] args)
    {
        SealedClass objSeald = new SealedClass();
        objSeald.Name = "Blah blah balh";
        objSeald.Print();

    }
}
3
Amin Saadati

Sie können beide einfach unterscheiden als:

       Sealed Class       |        Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be     | classes as well as cannot be
inherited                 | inherited
1
Abdul

1 - Nein, Sie können keine statische Klasse implementieren.

2 - Nein, Sie können nicht von einer statischen oder versiegelten Klasse erben

0
Smaiil