在C#入门经典(第三版)的122页有一段关于委托的代码如下:namespace Ch06Ex05
{
    class Program
    {
        delegate double ProcessDelegate(double param1,double param2);        static double Multiply(double param1,double param2)
        {
            return param1*param2;
        }        static double Divide(double param1, double param2)
        {
            return param1 / param2;
        }        static void Main(string[] args)
        {
            ProcessDelegate process;
            Console.WriteLine("Enter 2 number separated with comma:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');
            double param1 = Convert.ToDouble(input.Substring(0, commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1));
            Console.WriteLine("Enter M to Multiply or D to Divide:");
            input = Console.ReadLine();
            if (input == "M")                process = new ProcessDelegate(Multiply);            else
                process = new ProcessDelegate(Divide);            Console.WriteLine("Result:{0}",process(param1,param2));
            Console.ReadLine();
        }
    }
}
我将它修改为如下代码:namespace Ch06Ex05
{
    class Program
    {
        delegate double ProcessDelegate(double param1,double param2);        static double Multiply(double param1,double param2)
        {
            return param1*param2;
        }        static double Divide(double param1, double param2)
        {
            return param1 / param2;
        }        static void Main(string[] args)
        {
            ProcessDelegate process;
            Console.WriteLine("Enter 2 number separated with comma:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');
            double param1 = Convert.ToDouble(input.Substring(0, commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1));
            Console.WriteLine("Enter M to Multiply or D to Divide:");
            input = Console.ReadLine();
            if (input == "M")
            {
                process = new ProcessDelegate(Multiply);
            }
            else
            {
                if (input == "D")
                {
                    process = new ProcessDelegate(Divide);
                }
               }            Console.WriteLine("Result:{0}",process(param1,param2));
            Console.ReadLine();
        }
    }
}
修改后的代码运行会报错,提示错误:使用了未赋值的局部变量“process”
那么委托变量使用前必须指定一个具体的引用函数?