MethodBase.IsFinal Eigenschap

Definitie

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.

Van toepassing op

Zie ook