我是个菜,我承认!

weixinyaojinNUS 2010-11-07 11:14:36
下列代码出错,很简单的一个委托使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 关于函数
{
class Program
{
delegate double processDelegate(double arg1, double arg2);

static double multiple(double arg1, double arg2)
{
return arg1 * arg2;
}

static double division(double arg1, double arg2)
{
return arg1 / arg2;
}

static void Main(string[] args)
{
processDelegate s;
Console.WriteLine("请先输入两个值作为函数的参数:");
string input = Console.ReadLine();

int index = input.IndexOf(',');
double arg1 = Convert.ToDouble(input.Substring(0, index));
double arg2 = Convert.ToDouble(input.Substring(index + 1, input.Length - index - 1));

Console.WriteLine("请选择做乘法还是做除法?\n乘法(M)\t除法(D)");
string selection = Console.ReadLine();

if (selection.ToUpper() == "M")
s = new processDelegate(multiple);
else if (selection.ToUpper() == "D")
s = new processDelegate(division);
else
Console.WriteLine("您的选择有错");

Console.WriteLine("程序执行的结果是:{0}",s(arg1,arg2));
//Console.WriteLine("两个参数分别是:{0} {1}", arg1, arg2);
}
}
}

错误原因:使用了未赋值的局部变量"s"
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweet_ 2010-11-09
  • 打赏
  • 举报
回复
委托是委托上了,注意参数呀,哈哈。。。这也是我常范的错,不过如今不会了,写代码要细心
weixinyaojinNUS 2010-11-09
  • 打赏
  • 举报
回复
灰常感谢大家的回答,尤其是2楼的,一语中的。
熙风 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tsmoon2009 的回复:]
你的逻辑有问题
else
Console.WriteLine("您的选择有错");
这边如果用户没有输入"D"跟"M"也会直接执行 Console.WriteLine("程序执行的结果是:{0}",s(arg1,arg2));这句 这边就报错了

C# code

using System;
using System.Collections.Generic;
using Sy……
[/Quote]

Up`````````
tsmoon2009 2010-11-08
  • 打赏
  • 举报
回复
你的逻辑有问题
else
Console.WriteLine("您的选择有错");
这边如果用户没有输入"D"跟"M"也会直接执行 Console.WriteLine("程序执行的结果是:{0}",s(arg1,arg2));这句 这边就报错了

using System;
using System.Collections.Generic;
using System.Text;

namespace 关于函数
{
class Program
{
delegate double processDelegate(double arg1, double arg2);

static double multiple(double arg1, double arg2)
{
return arg1 * arg2;
}

static double division(double arg1, double arg2)
{
return arg1 / arg2;
}

static void Main(string[] args)
{
processDelegate s;
lbl:Console.WriteLine("请先输入两个值作为函数的参数:");
string input = Console.ReadLine();

int index = input.IndexOf(',');
double arg1 = Convert.ToDouble(input.Substring(0, index));
double arg2 = Convert.ToDouble(input.Substring(index + 1, input.Length - index - 1));

Console.WriteLine("请选择做乘法还是做除法?\n乘法(M)\t除法(D)");
string selection = Console.ReadLine();

if (selection.ToUpper() == "M")
{
s = new processDelegate(multiple);
Console.WriteLine("程序执行的结果是:{0}",s(arg1,arg2));
}
else if (selection.ToUpper() == "D")
{
s = new processDelegate(division);
Console.WriteLine("程序执行的结果是:{0}",s(arg1,arg2));
}
else
{
Console.WriteLine("您的选择有错");
goto lbl;
}

Console.ReadKey();
//Console.WriteLine("两个参数分别是:{0} {1}", arg1, arg2);
}
}
}

sorry_rr 2010-11-07
  • 打赏
  • 举报
回复
if (selection.ToUpper() == "M")
s = new processDelegate(multiple);
s(1.0,1.0);
else if (selection.ToUpper() == "D")
s = new processDelegate(division);
s(2.0,1.0);
else
Console.WriteLine("您的选择有错");
试试

110,567

社区成员

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

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

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