MethodBase.IsFinal Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un valore che indica se il metodo è final
.
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
Valore della proprietà
true
se questo metodo è final
; in caso contrario, false
.
Implementazioni
Esempio
Nell'esempio seguente viene false
visualizzato per , che potrebbe portare a pensare che IsFinal
MyMethod sia sottoponibile a override. Il codice viene stampato false
anche se MyMethod non è contrassegnato virtual
e pertanto non può essere sottoposto a override.
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
Commenti
Se il metodo virtuale è contrassegnato, non può essere sottoposto a final
override nelle classi derivate. Il metodo virtuale sottoposto a override può essere contrassegnato usando la parola chiave sealed in C#, la parola chiave final
NotOverridable in Visual Basic o la parola chiave sealed in C++/CLI. Il metodo può anche essere contrassegnato final
in modo implicito dal compilatore. Ad esempio, un metodo può essere definito come non virtuale nel codice, ma implementa un metodo di interfaccia. Common Language Runtime richiede che tutti i metodi che implementano i membri di interfaccia siano contrassegnati come ; pertanto, il compilatore virtual
contrassegna il metodo virtual final
.
È possibile usare questa proprietà, insieme alla proprietà , per determinare se un IsVirtual metodo è sottoponibile a override. Per eseguire l'override di un metodo, IsVirtual la proprietà deve essere e la proprietà deve essere true
IsFinal
false
. Per stabilire con certezza se un metodo è sottoponibile a override, usare codice simile al seguente:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Se è o è , non è possibile eseguire IsVirtual
false
IsFinal
true
l'override del metodo .