MethodBase.IsFinal Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 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.