MethodBase.IsFinal 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得值,指出這個方法是否為 final
。
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
屬性值
如果這個方法為 final
則為 true
;否則為 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 # 中的sealed關鍵字、Visual Basic 中的NotOverridable關鍵字或 c + + 中的sealed關鍵字標記覆寫的虛擬方法/cli 方法也可以 final
由編譯器隱含地標示。 例如,方法可能會在您的程式碼中定義為非虛擬,但它會執行介面方法。 Common Language Runtime 要求所有實介面成員的方法都必須標記為 virtual
; 因此,編譯器會標示方法 virtual final
。
您可以搭配屬性使用這個屬性 IsVirtual 來判斷方法是否可覆寫。 如果要讓方法成為可覆寫的, IsVirtual 屬性必須是 true
,而且 IsFinal
屬性必須是 false
。 若要確定方法是否可覆寫,請使用如下所示的程式碼:
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
如果 IsVirtual
是 false
或 IsFinal
為 true
,則無法覆寫方法。