Freigeben über


MethodBase.IsFinal Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob diese Methode final ist.

public:
 property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean

Eigenschaftswert

true, wenn diese Methode final ist, andernfalls false.

Implementiert

Beispiele

Im folgenden Beispiel wird für IsFinalangezeigtfalse, wodurch Sie möglicherweise vermuten, dass MyMethod überschrieben werden kann. Der Code wird gedruckt false , obwohl MyMethod nicht markiert virtual ist und daher nicht überschrieben werden kann.

using namespace System;
using namespace System::Reflection;

public ref class MyClass
{
public:
   void MyMethod(){}
};

int main()
{
   MethodBase^ m = MyClass::typeid->GetMethod( "MyMethod" );
   Console::WriteLine( "The IsFinal property value of MyMethod is {0}.", m->IsFinal );
   Console::WriteLine( "The IsVirtual property value of MyMethod is {0}.", m->IsVirtual );
}
using System;
using System.Reflection;

public class MyClass
{
    public void MyMethod()
    {
    }
    public static void Main()
    {
        MethodBase m = typeof(MyClass).GetMethod("MyMethod");
        Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal);
        Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual);
    }
}
Imports System.Reflection

Public Class MyClass1
    
    Public Sub MyMethod()
    End Sub
    
    Public Shared Sub Main()
        Dim m As MethodBase = GetType(MyClass1).GetMethod("MyMethod")
        Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal)
        Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual)
    End Sub
End Class

Hinweise

Wenn die virtuelle Methode markiert finalist, kann sie in abgeleiteten Klassen nicht überschrieben werden. Die überschriebene virtuelle Methode kann mit dem versiegelten Schlüsselwort (keyword) in C#, notOverridable Schlüsselwort (keyword) in Visual Basic oder mit versiegelten Schlüsselwort (keyword) in C++/CLI markiert final werden. Die -Methode kann auch implizit vom Compiler markiert final werden. Beispielsweise kann eine Methode in Ihrem Code als nicht virtuell definiert sein, aber sie implementiert eine Schnittstellenmethode. Die Common Language Runtime erfordert, dass alle Methoden, die Schnittstellenmember implementieren, als virtualgekennzeichnet werden müssen. Daher markiert der Compiler die -Methode virtual final.

Sie können diese Eigenschaft in Verbindung mit der IsVirtual -Eigenschaft verwenden, um zu bestimmen, ob eine Methode überschrieben werden kann. Damit eine Methode überschrieben werden kann, IsVirtual muss die Eigenschaft und true die IsFinal Eigenschaft sein false. Verwenden Sie Code wie den folgenden, um mit Sicherheit festzustellen, ob eine Methode überschrieben werden kann:

if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then

Wenn IsVirtual oder falseIsFinal ist true, kann die -Methode nicht überschrieben werden.

Gilt für:

Weitere Informationen