Share via


Virtuelle Member in versiegelten Typen nicht deklarieren

Aktualisiert: November 2007

     TypeName

DoNotDeclareVirtualMembersInSealedTypes

CheckId

CA1048

Kategorie

Microsoft.Design

Unterbrechende Änderung

Breaking

Ursache

Ein öffentlicher Typ ist versiegelt und deklariert eine Methode, die sowohl virtual (Overridable in Visual Basic) als auch nicht final ist. Diese Regel meldet keine Verstöße bei Delegattypen, die diesem Muster folgen müssen.

Regelbeschreibung

Typen deklarieren Methoden als virtuell, damit erbende Typen die Implementierung der virtuellen Methode überschreiben können. Per Definition ist es nicht möglich, von einem versiegelten Typ zu erben. Dementsprechend ist eine virtuelle Methode auf einem versiegelten Typ bedeutungslos.

Bei Verwendung des Visual Basic .NET-Compilers und des C#-Compilers ist ausgeschlossen, dass Typen gegen diese Regel verstoßen.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, definieren Sie die Methode als nicht virtuelle Methode, oder machen Sie den Typ vererbbar.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel. Das Beibehalten des aktuellen Zustands des Typs kann Wartungsprobleme verursachen und bietet keine Vorteile.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen diese Regel verstößt.

using namespace System;

namespace DesignLibrary
{                        
    public ref class SomeType sealed
    {
    public:
        virtual bool VirtualFunction() { return true; }
    };
}