Sdílet prostřednictvím


MethodBase.IsFinal Vlastnost

Definice

Získá hodnotu určující, zda je tato metoda final.

public:
 property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean

Hodnota vlastnosti

true pokud je finaltato metoda ; jinak , false.

Implementuje

Příklady

Následující příklad zobrazí false pro IsFinal, což vás může vést k názoru, že MyMethod je přepsán. Kód se vytiskne false , i když myMethod není označený virtual , a proto ho nelze přepsat.

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

Poznámky

Pokud je virtuální metoda označena final, nelze ji přepsat v odvozených třídách. Přepsat virtuální metodu lze označit final pomocí zapečetěného klíčového slova v jazyce C# nebo NotOverridable v jazyce Visual Basic. Metodu lze také implicitně označit final kompilátorem. Například metoda může být v kódu definována jako ne virtuální, ale implementuje metodu rozhraní. Modul CLR (Common Language Runtime) vyžaduje, aby všechny metody implementované členy rozhraní byly označeny jako virtual; proto kompilátor označuje metodu virtual final.

Tuto vlastnost můžete použít ve spojení s IsVirtual vlastností k určení, zda je metoda přepsána. Aby byla metoda přepsána, IsVirtual musí být true vlastnost a IsFinal vlastnost musí být false. Pokud chcete zajistit jistotu, zda je metoda přepsána, použijte například kód:

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

Pokud IsVirtual je false nebo IsFinal je true, pak metodu nelze přepsat.

Platí pro

Viz také