C#委托程序-在以下的程式中标注出的部份为什麽使用if...else语句不会报错,而使用if...else if 就会报错

namespace委托{classProgram{delegatedoubleProcessDelegate(doubleparam1,doubleparam2);sta... namespace 委托
{
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 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 //如果使用else if(input=="D") 会提示以下标注出的错误
process = new ProcessDelegate(Divide);
Console.WriteLine("result: {0}",process(param1,param2)); //该句process会报错Use of //unsigned local variable 'process'
Console.ReadKey();
}
}
}
展开
 我来答
然后去远足
2015-02-07 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2416万
展开全部

引用类型的变量类型在使用前必须赋值,否则编译不通过。

 

如果你是两个 if 判断,在编译器看来是有可能两个 if 都不进去,导致 process 这个变量没有赋值就使用了。

 

所以在声明的时候改为:

ProcessDelegate process = null;
子丶夜
2015-02-07 · TA获得超过397个赞
知道小有建树答主
回答量:326
采纳率:25%
帮助的人:220万
展开全部
这和判断有什么关系。。。
追问
没明白你说什麽,我的问题是为什麽使用if ......else...不会报错,但是if.....else if....却会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式