Freigeben über


MethodBase.IsFinal Eigenschaft

Definition

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

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 lautet final; andernfalls false.

Implementiert

Beispiele

Das folgende Beispiel zeigt false an, für IsFinaldie Sie denken können, dass MyMethod überschrieben werden kann. Der Code wird gedruckt false , obwohl MyMethod nicht markiert virtual ist und daher nicht überschrieben werden kann.

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 mithilfe des versiegelten Schlüsselworts in C# oder NotOverridable in Visual Basic markiert final werden. Die Methode kann auch implizit vom Compiler markiert final werden. Eine Methode kann z. B. als nicht virtuell im Code definiert werden, implementiert jedoch eine Schnittstellenmethode. Die Common Language Runtime erfordert, dass alle Methoden, die Schnittstellenmber implementieren, als gekennzeichnet virtualwerden müssen. Daher markiert der Compiler die Methode virtual final.

Sie können diese Eigenschaft in Verbindung mit der IsVirtual Eigenschaft verwenden, um zu ermitteln, ob eine Methode überschrieben werden kann. Damit eine Methode überschrieben werden kann, IsVirtual muss die Eigenschaft und IsFinaltrue Eigenschaft seinfalse. Um mit Sicherheit zu ermitteln, ob eine Methode außer Kraft gesetzt werden kann, verwenden Sie Code wie folgt:

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

false Ist IsVirtual oder IsFinal isttrue, kann die Methode nicht überschrieben werden.

Gilt für:

Weitere Informationen