【发布时间】:2015-10-15 07:57:02
【问题描述】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Event_training
{
class Publisher
{
public event EventHandler x;
public void raise()
{
x(this, null);
}
}
class Subscriber
{
public void method1(object o, EventArgs e)
{
Console.WriteLine("metod1 called");
}
public void method2(object o, EventArgs e)
{
Console.WriteLine("metod2 called");
}
}
class Program
{
static void Main(string[] args)
{
Publisher p = new Publisher();
Subscriber s = new Subscriber();
p.x += s.method1;
p.x += s.method2;
p.raise();
}
}
}
很难理解“this”关键字。它指的是什么“x(this, null);”在这里?我可以用其他东西代替“this”吗?
【问题讨论】:
-
请阅读this (C# Reference)并关闭问题
-
this指的是Publisher的当前实例。 -
我为什么要把它的实例交给它的方法?
-
我们怎么知道你为什么这样做?
-
@Lyrk
x是一个EventHandler,它接受一个sender(引发事件的原因),在这种情况下是您的类实例,以及您作为 null 传递的EventArgs。如果您特别问为什么要这样做,那么只有您可以回答这个问题。