MethodBase.IsFinal Propriedade

Definição

Obtém um valor que indica se este método é final.

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

Valor de Propriedade

true se este método for final; caso contrário, false.

Implementações

Exemplos

O exemplo seguinte mostra false para IsFinal, o que pode levá-lo a pensar que o MyMethod é sobrescrito. O código imprime-se false mesmo que o MyMethod não esteja marcado virtual e, portanto, não pode ser sobreposto.

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

Observações

Se o método virtual estiver marcado final, não pode ser sobreposto em classes derivadas. O método virtual sobreposto pode ser marcado como final usando a palavra-chave sealed em C# ou NotOverridable em Visual Basic. O método também pode ser marcado final implicitamente pelo compilador. Por exemplo, um método pode ser definido como não virtual no seu código, mas implementa um método de interface. O Common Language Runtime exige que todos os métodos que implementam membros da interface sejam marcados como virtual; por isso, o compilador marca o método virtual final.

Pode usar esta propriedade, em conjunto com a propriedade IsVirtual , para determinar se um método é sobrescrito. Para que um método seja sobrescrito, IsVirtual propriedade deve ser true e IsFinal propriedade deve ser false. Para estabelecer com certeza se um método é sobrescrito, use código como este:

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

Se IsVirtual for false ou IsFinal for true, então o método não pode ser sobreposto.

Aplica-se a

Ver também