MethodBase.IsFinal Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald die aangeeft of deze methode is final.
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
Waarde van eigenschap
true als deze methode is final; anders , false.
Implementeringen
Voorbeelden
In het volgende voorbeeld wordt weergegeven falseIsFinal, waardoor u denkt dat MyMethod kan worden overschreven. De code wordt afgedrukt false , ook al is MyMethod niet gemarkeerd virtual en kan dus niet worden overschreven.
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
Opmerkingen
Als de virtuele methode is gemarkeerd final, kan deze niet worden overschreven in afgeleide klassen. De overschreven virtuele methode kan worden gemarkeerd als final met behulp van het trefwoord in C# of NotOverridable trefwoord in Visual Basic. De methode kan ook impliciet worden gemarkeerd final door de compiler. Een methode kan bijvoorbeeld worden gedefinieerd als niet-virtueel in uw code, maar implementeert een interfacemethode. De Common Language Runtime vereist dat alle methoden die interfaceleden implementeren, moeten worden gemarkeerd als virtual; daarom markeert de compiler de methode virtual final.
U kunt deze eigenschap, in combinatie met de IsVirtual eigenschap, gebruiken om te bepalen of een methode kan worden overschreven. Als u een methode wilt overschrijven, IsVirtual moet de eigenschap zijn true en IsFinal moet de eigenschap zijn false. Als u zeker wilt weten of een methode kan worden overschreven, gebruikt u code zoals deze:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Als IsVirtual dat het is false of IsFinal is true, kan de methode niet worden overschreven.