MethodBase.IsFinal Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее, является ли метод final
.
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
Значение свойства
true
, если этот метод имеет значение final
. В противном случае — false
.
Реализации
Примеры
Следующий пример отображается false
для IsFinal
, что может привести к тому, что MyMethod является переопределенным. Код печатается, false
даже если MyMethod не помечен virtual
и поэтому не может быть переопределен.
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
Комментарии
Если виртуальный метод помечен final
, его нельзя переопределить в производных классах. Переопределенный виртуальный метод можно пометить final
с помощью запечатанных ключевое слово в C#, NotOverridable ключевое слово в Visual Basic или запечатанных ключевое слово в C++/CLI. Метод также может быть помечен final
неявно компилятором. Например, в коде метод может быть определен как не виртуальный, но он реализует метод интерфейса. Среда CLR требует, чтобы все методы, реализующие члены интерфейса, были помечены как virtual
; поэтому компилятор помечает метод virtual final
.
Это свойство можно использовать вместе со свойством IsVirtual , чтобы определить, является ли метод переопределенным. Чтобы метод был переопределен, свойство должно иметь значение true
, IsVirtual а IsFinal
свойство должно иметь значение false
. Чтобы с уверенностью определить, является ли метод переопределенным, используйте следующий код:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
Если IsVirtual
имеет значение false
или IsFinal
имеет true
значение , метод нельзя переопределить.