MethodBase.IsFinal Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se esse método é final
.
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
Valor da propriedade
true
se esse método for final
; caso contrário, false
.
Implementações
Exemplos
O exemplo a seguir exibe false
para , o que pode levar você a pensar que IsFinal
MyMethod é substituído. O código false
imprime mesmo que MyMethod não seja marcado virtual
e, portanto, não possa ser substituído.
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
Comentários
Se o método virtual estiver marcado como , ele não poderá final
ser substituído em classes derivadas. O método virtual substituído pode ser marcado usando a palavra-chave sealed em C#, a palavra-chave NotOverridable no Visual Basic ou a palavra-chave sealed no final
C++/CLI. O método também pode ser marcado final
implicitamente pelo compilador. Por exemplo, um método pode ser definido como não virtual em seu código, mas implementa um método de interface. O Common Language Runtime requer que todos os métodos que implementam membros da interface sejam marcados como ; portanto, o virtual
compilador marca o método virtual final
.
Você pode usar essa propriedade, em conjunto com a propriedade , para IsVirtual determinar se um método é substituído. Para que um método seja substituído, IsVirtual a propriedade deve ser e a propriedade deve ser true
IsFinal
false
. Para estabelecer com certeza se um método é substituído, use um código como este:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Se IsVirtual
for ou for , o método não poderá ser false
IsFinal
true
substituído.