MethodBase.IsFinal Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.