我有一个简单的程序,其行为不像我预期的那样行为。我的印象是,这两个方法签名会在委托的调用列表的顺序CallEvent()方法的过程中运行,使测试属性等同于40.因此:关于C#委托/事件处理
Test += (20+15);
Test += (20-15);
Test == 40;
,因为它会变成,这个赋值等于5,这是减法的值。如果它先做了加法,然后用减法代替它,是不是没有达到Test + =赋值的目的?也许它正在绕过所有的一起(但不太可能)。我怀疑更多内在的东西正在发生,我无法看到我目前的编程知识。
请和谢谢你! LiquidWotter
//MY NAMESPACE
namespace MyNamespace
{
//MAIN
private static void Main(string[] args)
{
//CREATE MY OBJECT
MyClass MyObject = new MyClass();
//ADD CALLS TO EVENT
MyObject.MyEvent += Add;
MyObject.MyEvent += Sub;
//CALL EVENT AND WRITE
MyObject.CallEvent(20, 15);
Console.WriteLine(MyObject.Test.ToString());
//PAUSE
Console.ReadLine();
}
//ADDITION
private static int Add(int x, int y)
{ return x + y; }
//SUBTRACTION
private static int Sub(int x, int y)
{ return x - y; }
//MY CLASS
public class MyClass
{
//MEMBERS
public delegate int MyDelegate(int x, int y);
public event MyDelegate MyEvent;
public int Test { get; set; }
//CONSTRUCTOR
public MyClass()
{
this.Test = 0;
}
//CALL Event
public void CallEvent(int x, int y)
{
Test += MyEvent(x, y);
}
}
}
你并不是真正按照他们的意图使用事件。如果你想存储一个委托,把它存储在一个变量中。这不是一个事件的作用。 –
你偶然发现所有事件都应该是'void f(...)' –