获得;使用未分配的局部变量;C#错误
请改为使用此行:获得;使用未分配的局部变量;C#错误,c#,C#,请改为使用此行: static string GetDay(int dayNum) { string dayname = String.Empty; switch(dayNum) { case 0: dayname = "sunday"; break; } return dayname; } 这样,如果您的case语句都不匹配,函数可以返回空字符串 否则,如果DayNum!=0时,函数没有要返回的内容-这就是为什么会出现错误。ifdaynum!=1则不会初
static string GetDay(int dayNum) {
string dayname = String.Empty;
switch(dayNum) {
case 0:
dayname = "sunday";
break;
}
return dayname;
}
这样,如果您的case语句都不匹配,函数可以返回空字符串
否则,如果DayNum!=0时,函数没有要返回的内容-这就是为什么会出现错误。if
daynum!=1
则不会初始化dayname
;添加默认值:
根据您的代码,GetDay(1)的值是多少?字符串dayname必须指定code>,因为switch
永远不能执行。编译器知道,如果dayNum
不是0
,则初始化dayName
的开关中的大小写将被跳过,因此dayName
在返回时将被取消初始化。但是,编译器不知道您调用GetDay()
的唯一位置是向它传递0
时。所以它不知道对于这个特定的实现,dayname
总是被初始化,因此它必须给出一个错误。这里的关键是,当涉及到深层程序流分析时,编译器故意装聋作哑。static string GetDay(int daynum)=>datenum==0?“星期天”:“不是星期天”
或alikeWhyString.Empty
?@JohnathanBarclay因为GetDay()
未声明为静态字符串?GetDay(int dayNum)
如果启用了可空检查,则将dayname
初始化为null
将产生编译错误(因为代码可能返回空值)。当然,如果dayNum
超出范围,实代码应该抛出异常,而不是返回空字符串或null。@MatthewWatson实代码应该抛出异常,而不是返回空字符串或null。返回空字符串很少有用。
static string GetDay(int dayNum) {
string dayname = String.Empty;
switch(dayNum) {
case 0:
dayname = "sunday";
break;
}
return dayname;
}
string dayname = "";