MethodBase.IsFinal 속성

정의

이 메서드가 final인지 여부를 나타내는 값을 가져옵니다.

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

속성 값

Boolean

이 메서드가 final이면 true이고, 그렇지 않으면 false입니다.

구현

예제

다음 예제에서는 MyMethod를 재정의할 수 있다고 생각할 수 있는 예를 표시 false IsFinal합니다. MyMethod가 false 표시되지 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경우 파생 클래스에서 재정의할 수 없습니다. 재정의된 가상 메서드는 C#의 봉인된 키워드, Visual Basic NotOverridable 키워드 또는 C++/CLI의 봉인된 키워드를 사용하여 표시 final 할 수 있습니다. 컴파일러에서 메서드를 암시적으로 표시 final 할 수도 있습니다. 예를 들어 메서드는 코드에서 가상이 아닌 것으로 정의될 수 있지만 인터페이스 메서드를 구현합니다. 공용 언어 런타임에서는 인터페이스 멤버를 구현하는 모든 메서드를 로 virtual표시해야 합니다. 따라서 컴파일러는 메서드 virtual final를 표시합니다.

이 속성을 속성과 함께 사용하여 메서드를 재정의 IsVirtual 할 수 있는지 확인할 수 있습니다. 메서드를 재정의하려면 IsVirtual 속성이어야 하고 IsFinal 속성은 true 이어야 합니다false. 메서드를 재정의할 수 있는지 여부를 확실하게 설정하려면 다음과 같은 코드를 사용합니다.

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

false 경우 IsVirtual IsFinal true메서드를 재정의할 수 없습니다.

적용 대상

추가 정보