다음을 통해 공유


MethodBase.IsFinal 속성

정의

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

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

속성 값

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

구현

예제

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

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

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

false 또는 IsFinaltrueIsVirtual 메서드를 재정의할 수 없습니다.

적용 대상

추가 정보