public class Test
{
[Test]
public void TestMethod()
{
var x = new TestChild();
x.TestAction += () => Debug.Log("Hello"); // This will register TestChild.TestAction
x.RaiseFromChild(); // Hello
x.RaiseFromParent(); // TestParent.TestAction ignored!
}
}
public class TestParent
{
public virtual event Action TestAction; // Not registered!
public void RaiseFromParent()
{
TestAction?.Invoke();
}
}
public class TestChild : TestParent
{
public override event Action TestAction;
public void RaiseFromChild()
{
TestAction?.Invoke();
}
}
C#
복사
참고
기본 클래스에서 가상 이벤트를 선언하지 말고 파생 클래스에서 재정의합니다. C# 컴파일러는 이러한 이벤트를 올바르게 처리하지 않으며, 파생 이벤트의 구독자가 실제로 기본 클래스 이벤트를 구독할지 여부를 예측할 수 없습니다.