MethodBase.IsFinal Proprietà

Definizione

Ottiene un valore che indica se il metodo è final.Gets a value indicating whether this method is final.

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

Valore della proprietà

Boolean

true se questo metodo è final; in caso contrario, false.true if this method is final; otherwise, false.

Implementazioni

Esempio

Nell'esempio seguente viene visualizzato false per IsFinal , che potrebbe comportare l'override di MyMethod.The following example displays false for IsFinal, which might lead you to think that MyMethod is overridable. Il codice stampa false anche se MyMethod non è contrassegnato virtual e pertanto non può essere sottoposto a override.The code prints false even though MyMethod is not marked virtual and thus cannot be overridden.

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 final , non può essere sottoposto a override nelle classi derivate.If the virtual method is marked final, it can't be overridden in derived classes. Il metodo virtuale sottoposto a override può essere contrassegnato final usando la parola chiave sealed in C#, la parola chiave NotOverridable in Visual Basic o la parola chiave sealed in C++/CLI.The overridden virtual method can be marked final using the sealed keyword in C#, NotOverridable keyword in Visual Basic, or sealed keyword in C++/CLI. Il metodo può anche essere contrassegnato final in modo implicito dal compilatore.The method can also be marked final implicitly by the compiler. Ad esempio, un metodo può essere definito come non virtuale nel codice, ma implementa un metodo di interfaccia.For example, a method might be defined as non-virtual in your code, but it implements an interface method. Common Language Runtime richiede che tutti i metodi che implementano i membri di interfaccia devono essere contrassegnati come virtual ; pertanto, il compilatore contrassegna il metodo virtual final .The Common Language Runtime requires that all methods that implement interface members must be marked as virtual; therefore, the compiler marks the method virtual final.

È possibile utilizzare questa proprietà, in combinazione con la IsVirtual proprietà, per determinare se un metodo è sottoponibile a override.You can use this property, in conjunction with the IsVirtual property, to determine if a method is overridable. Per eseguire l'override di un metodo, la IsVirtual proprietà deve essere true e la IsFinal proprietà deve essere false .For a method to be overridable, IsVirtual property must be true and IsFinal property must be false. Per stabilire con certezza se un metodo può essere sottoponibile a override, usare codice simile al seguente:To establish with certainty whether a method is overridable, use code such as this:

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

Se IsVirtual è false o IsFinal è true , non è possibile eseguire l'override del metodo.If IsVirtual is false or IsFinal is true, then the method cannot be overridden.

Si applica a

Vedi anche