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 označující, zda je final
tato metoda .
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 final
tato metoda ; jinak , false
.
Implementuje
Příklady
Následující příklad zobrazí false
pro IsFinal
, což může vést k tomu, že myMethod je přepisovatelný. Kód se vytiskne false
, i když myMethod není označen virtual
, a proto ho nelze 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čená , final
není možné ji v odvozených třídách přepsat. Přepsanou virtuální metodu lze označit final
pomocí klíčového slova sealed v jazyce C#, klíčového slova NotOverridable v jazyce Visual Basic nebo klíčového slova sealed v jazyce C++/CLI. Metodu lze také implicitně označit final
kompilátorem. Například metoda může být v kódu definována jako ne virtual, ale implementuje metodu rozhraní. Modul CLR (Common Language Runtime) vyžaduje, aby všechny metody, které implementují členy rozhraní, byly označeny jako virtual
, proto kompilátor označí metodu virtual final
.
Tuto vlastnost můžete použít ve spojení s IsVirtual vlastností k určení, zda je metoda přepisovatelná. Aby byla metoda přepisovatelná, IsVirtual vlastnost musí být true
a IsFinal
vlastnost musí být false
. Pokud chcete s jistotou zjistit, jestli je metoda přepisovatelná, použijte kód, jako je tento:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Pokud IsVirtual
je false
nebo IsFinal
je true
, nelze metodu přepsat.