Condividi tramite


MethodBase.IsFinal Proprietà

Definizione

Ottiene un valore che indica se questo 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 visualizzato false per IsFinal, che potrebbe causare l'override di MyMethod. Il codice viene stampato false anche se MyMethod non è contrassegnato virtual e pertanto non può essere sottoposto a override.

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. Il metodo virtuale sottoposto a override può essere contrassegnato final usando la parola chiave sealed in C# o NotOverridable in Visual Basic. Il metodo può anche essere contrassegnato final in modo implicito dal compilatore. Ad esempio, un metodo potrebbe 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 dell'interfaccia debbano essere contrassegnati come virtual, pertanto il compilatore contrassegna il metodo virtual final.

È possibile utilizzare questa proprietà, insieme alla IsVirtual proprietà , per determinare se un metodo è sottoposto a override. Affinché un metodo possa essere sottoposto a override, IsVirtual la proprietà deve essere true e la IsFinal proprietà deve essere false. Per stabilire con certezza se un metodo può essere sottoposto a override, usare codice simile al seguente:

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

Se IsVirtual è o IsFinal è truefalse , il metodo non può essere sottoposto a override.

Si applica a

Vedi anche