MethodBase.IsFinal Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.