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
입니다.
구현
예제
다음 예제에서는 에 대해 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
또는 IsFinal
이true
면 IsVirtual
메서드를 재정의할 수 없습니다.
적용 대상
추가 정보
.NET