我可以从该委托中访问包含委托的对象吗?
e.g。
class Salutation {
public string OtherParty {get; set;}
public AddressDelegate GreetingDelegate {get; set;}
}
public delegate void AddressDelegate ();
则...
void Main() {
Salutation hello = new Salutation {
OtherParty = "World",
GreetingDelegate = new AddressDelegate(HelloSayer)
};
hello.GreetingDelegate();
}
private void HelloSayer() {
Console.WriteLine(string.Format("Hello, {0}!", OtherParty));
}
那么可以从OtherParty
函数中引用Salutation类中的HelloSayer
属性,还是需要将数据作为参数传递给函数?
答案 0 :(得分:2)
你需要通过它。代表对所有者对象一无所知。因为它不是所有者,所以它只是一个恰好引用此委托的对象。
答案 1 :(得分:1)
static void Main(string[] args)
{
Salutation hello = new Salutation();
hello.OtherParty = "World";
hello.GreetingDelegate = new AddressDelegate(HelloSayer);
hello.GreetingDelegate(hello.OtherParty);
Console.ReadKey();
}
public delegate void AddressDelegate(string otherParty);
private static void HelloSayer(string otherParty)
{
Console.WriteLine(string.Format("Hello, {0}!", otherParty));
}
安德烈说你需要传递它,这是一个例子。