【发布时间】:2012-03-04 18:16:52
【问题描述】:
假设我有以下代码。直接分配动作和订阅事件有什么区别?
//Action directly assigned
public class ClassA
{
public Action<string> OnAdd;
private void SomethingHappened()
{
OnAdd("It Happened");
}
}
public class ClassB
{
public ClassB()
{
var myClass = new ClassA();
myClass.OnAdd = Add;
}
private void Add(string Input)
{
//do something
}
}
//Event handlers
public class ClassA
{
public event Action<string> OnAdd;
private void SomethingHappened()
{
if (OnAdd != null)
OnAdd("It Happened"); //Should it be OnAdd.Invoke("It Happened") ???????
}
}
public class ClassB
{
public ClassB()
{
var myClass = new ClassA();
myClass.OnAdd += Add;
}
private void Add(string Input)
{
//do something
}
}
【问题讨论】:
-
通常您将使用 EventArgs
而不是使用操作来创建事件。 -
@SoMoS 即使它只是一个字符串或整数被传递?
-
@jon 这行
myClass.Add = myClass.OnAdd;无效....Add指的是什么? -
@RoyiNamir 谢谢,很好。已修改代码
-
@jon i.stack.imgur.com/LeUSA.jpg请看推荐模式
标签: c# .net .net-4.0 .net-3.5 delegates