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 für IsFinal
angezeigtfalse
, 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 final
ist, 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 virtual
gekennzeichnet 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 false
IsFinal
ist true
, kann die -Methode nicht überschrieben werden.