关于委托的基础问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
C# 高级编程第六章 讲委托.第一个小例子我就不太明白
例子是这样
class Program
{
private delegate string GetAString();
static void Main(string[] args)
{
int X = 40;
GetAString FirstStringMethod = new GetAString(X.ToString);
Console.WriteLine( "String is " + FirstStringMethod());
}
}
=============================================
这一句
GetAString FirstStringMethod = new GetAString(X.ToString);
这里的GetAString怎么会有个参数.定义的时候也没有加参数. 不是很明白.
菜鸟的问题.指教一下,谢谢
------解决方案--------------------private delegate string GetAString();
这句并不是说明委托是什么样子,而是说委托所指向的方法是什么样子
而X.ToString是一个没有参数、返回string的方法
所以用GetAString FirstStringMethod = new GetAString(X.ToString);将委托和方法关联起来
------解决方案--------------------再给一个例子
using System;
namespace 委托
{
delegate int NumOpe(int a,int b); //委托声明
class Class1
{
static void Main(string[] args)
{
Class1 c1 = new Class1();
NumOpe p1 = new NumOpe(c1.Add); //委托实例化
Console.WriteLine(p1(1,2)); //委托调用
Console.ReadLine();
}
private int Add(int num1,int num2)
{
return(num1+num2);
}
}
}
------解决方案--------------------X.ToString不是参数!
String FirstStringMethod = new GetAString(X.ToString);的括号里表示要执行的方法!
而这个方法就是X.ToString
委托定义里的参数是方便那个括号里要执行的方法的参数!也即ToString()的参数,而非GetAString()的参数!
ToString没有参数,所以没什么问题!