本帖最后由 mozart0127 于 2009-09-19 15:50:45 编辑

解决方案 »

  1.   

               if(h=="*")
                    d=new mydelegate(chen);
                else if(h=="/")
                    d=new mydelegate(chu);
    很简单的例子,如果h=='a'的话,你的if(h=="*")和  else if(h=="/")都不成立,所以编译器抱错如果你能确保这两个分之至少有1个成立的话,可以这样:
     if(h=="*")
     d=new mydelegate(chen);
      else //这里不再判断,这样if和else至少有1 个成立
       d=new mydelegate(chu);或者这样:
    d=null;//这样可以通过编译器检查
     if(h=="*")
           d=new mydelegate(chen);
        else if(h=="/")
           d=new mydelegate(chu);
      

  2.   

    还可以这样:
      if(h=="*")
                    d=new mydelegate(chen);
                else if(h=="/")
                    d=new mydelegate(chu);
     else if(h=='+')
    else if..
    else if
    else 
      throw new Exception();
      

  3.   


    class Program
        {        delegate double mydelegate(double a, double b);
            static double chen(double a, double b)
            {
                return a * b;
            }
            static double chu(double a, double b)
            {
                return a / b;
            }
            static void Main(string[] args)
            {
                mydelegate d;
                Console.WriteLine("输入两个数字:");
                double a = Convert.ToDouble(Console.ReadLine());
                double b = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("请输入运算符");
                string h=Console.ReadLine();
                if(h=="*")
                    d=new mydelegate(chen);
                else if(h=="/")
                    d=new mydelegate(chu);
             //主要在这里了,万一h!=×和/ 下面这句中的d(a,b)就没实例化了
                Console.WriteLine("result:{0}",d(a,b) );
                Console.ReadKey();
            }