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

Boolean

true, wenn diese Methode final ist, andernfalls false.

Implementiert

Beispiele

Im folgenden Beispiel wird false für IsFinal angezeigt, wodurch Sie möglicherweise denken, dass MyMethod überschrieben werden kann. Der Code wird false gedruckt, 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 als markiert final ist, kann sie in abgeleiteten Klassen nicht überschrieben werden. Die überschriebene virtuelle Methode kann final mithilfe des sealed-Schlüsselworts in C#, des NotOverridable-Schlüsselworts in Visual Basic oder des sealed-Schlüsselworts in C++/CLI markiert werden. Die -Methode kann auch implizit vom Compiler markiert final werden. Beispielsweise kann eine Methode im Code als nicht virtuell definiert werden, implementiert aber eine Schnittstellenmethode. Die Common Language Runtime erfordert, dass alle Methoden, die Schnittstellenmember implementieren, als gekennzeichnet werden virtual 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 true und die IsFinal -Eigenschaft false sein. Um mit Sicherheit festzustellen, ob eine Methode überschreibbar ist, verwenden Sie Code wie diesen:

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

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

Gilt für

Siehe auch