7.1.2 在C#中使用委托
声明一个委托:private delegate string GetAString();
如何使用委托:
private delegate string GetAString();static void Main(){int x = 40;
GetAString firstStringMethod = new GetAString(x.ToString);
Console.WriteLine("String is {0}" + firstStringMethod());
// With firstStringMethod initialized to x.ToString(),
// the above statement is equivalent to saying
// Console.WriteLine("String is {0}" + x.ToString());
}
给委托实例提供括号与调用委托类的Invoke()方法完全相同。firstStringMethod是委托类型的一个变量,
所以C#编译器会用firstStringMethod.Invoke()代替firstStringMethod()。
- firstStringMethod();
- firstStringMethod. Invoke();
实例化委托的两种方法
- GetAString firstStringMethod = new GetAString(x.ToString)
- GetAString firstStringMethod = x.ToString
不能调用x.ToString()方法,把它传送给委托变量。调用x.ToString()方法会返回一个不能赋予委托变量的字符串对象。
只能把方法的地址赋予委托变量。