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í.
Načte hodnotu, která označuje, 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 tato metoda final
. v opačném případě false
.
Implementuje
Příklady
Následující příklad zobrazuje false
pro IsFinal
, což může vést k názoru, že MyMethod lze přepsat. Kód bude vytištěn i v případě, false
že MyMethod není označen virtual
a nelze jej proto přepsat.
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
Poznámky
Pokud je virtuální metoda označena final
, nemůže být přepsána v odvozených třídách. přepsaná virtuální metoda může být označena final
pomocí klíčového slova sealed v jazyce C#, klíčové slovo NotOverridable v Visual Basic nebo zapečetěné klíčové slovo v jazyce C++/CLI. Metoda může být také final
implicitně označena kompilátorem. Například metoda může být definována jako nevirtuální v kódu, ale implementuje metodu rozhraní. Modul CLR (Common Language Runtime) vyžaduje, aby všechny metody, které implementují členy rozhraní, měly být označeny jako virtual
; proto kompilátor označí metodu virtual final
.
Tuto vlastnost lze použít ve spojení s IsVirtual vlastností k určení, zda lze metodu přepsat. Aby bylo možné metodu přepsat, IsVirtual musí být vlastnost true
a IsFinal
vlastnost musí být false
. K navázání jistoty, zda je možné metodu přepsat, použijte kód, jako je například:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Pokud IsVirtual
je false
nebo IsFinal
true
, pak metodu nelze přepsat.