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怎么会有个参数.定义的时候也没有加参数. 不是很明白.菜鸟的问题.指教一下,谢谢

解决方案 »

  1.   

    private delegate string GetAString();
    这句并不是说明委托是什么样子,而是说委托所指向的方法是什么样子
    而X.ToString是一个没有参数、返回string的方法
    所以用GetAString FirstStringMethod = new GetAString(X.ToString);将委托和方法关联起来
      

  2.   

    再给一个例子
    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);
            }
        }
    }
      

  3.   

    X.ToString不是参数!
    String FirstStringMethod = new GetAString(X.ToString);的括号里表示要执行的方法!
    而这个方法就是X.ToString
    委托定义里的参数是方便那个括号里要执行的方法的参数!也即ToString()的参数,而非GetAString()的参数!
    ToString没有参数,所以没什么问题!