C# 委托及其赋值问题(新手提问)

skjona 2009-04-26 10:44:52
又要麻烦各位了,正在学习《C# 入门经典(第4版)》中的C#委托,但是书中的一个例子我却无法编译

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 numbers separated with a 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);
Console.WriteLine("Result: {0}", process(param1, param2));
Console.ReadKey();
}
}

编译的错误,提示我“使用了未赋值的局部变量“process”“
请问各位这是什么原因,书中并未写到委托之后需要赋值。
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
skjona 2009-04-26
  • 打赏
  • 举报
回复
我知道原因了,原来是代码中的一部分有问题

if (input == "M")
process = new ProcessDelegate(Multiply);
else
process = new ProcessDelegate(Divide);
替换上面的if字段就ok了
谢谢楼上各位的提醒。
wuyq11 2009-04-26
  • 打赏
  • 举报
回复
ProcessDelegate process= new ProcessDelegate(Multiply);
ProcessDelegate process= new ProcessDelegate(Divide);
蓝海D鱼 2009-04-26
  • 打赏
  • 举报
回复
if (input == "M")
外面 执行不到
steven_007 2009-04-26
  • 打赏
  • 举报
回复
process = new ProcessDelegate(Multiply);
这句可能没执行到吧

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧