Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得;使用未分配的局部变量;C#错误_C# - Fatal编程技术网

获得;使用未分配的局部变量;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,因为
switch
永远不能执行。编译器知道,如果
dayNum
不是
0
,则初始化
dayName
的开关中的大小写将被跳过,因此
dayName
在返回时将被取消初始化。但是,编译器不知道您调用
GetDay()
的唯一位置是向它传递
0
时。所以它不知道对于这个特定的实现,
dayname
总是被初始化,因此它必须给出一个错误。这里的关键是,当涉及到深层程序流分析时,编译器故意装聋作哑。
static string GetDay(int daynum)=>datenum==0?“星期天”:“不是星期天”
或alikeWhy
String.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 = "";