次のコードでは「Hello、World!」と表示されないのはなぜですか?C#イベントを他のイベントに直接サブスクライブできない理由
using System;
namespace Test
{
public class Program
{
public static void Main(string[] args)
{
var a = new A();
var b = new B(a);
b.Evnt += val => Console.WriteLine(val);
a.Do();
}
}
public class A
{
public void Do()
{
Evnt("Hello, World!");
}
public event Action<string> Evnt = v => {};
}
public class B
{
public B(A a)
{
a.Evnt += Evnt; // this does not work
}
public event Action<string> Evnt = v => {};
}
}
しかし、私は
a.Evnt += v => Evnt(v);
すべてが正常に動作してライン
a.Evnt += Evnt;
を交換する場合。
これは禁止されている場合、あるイベントを別のイベントにサブスクライブする意味と、そのときにコンパイルエラーまたは警告が表示されないのはなぜですか?