c# - 有人能告诉我为什么 (return DayName;) 会导致错误,因为它是一个未分配的局部变量吗?
问题描述
这是我的代码:
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetDay(0));
Console.ReadLine();
}
static string GetDay(int DayNum)
{
string DayName;
switch (DayNum)
{
case 0:
DayName = "Sunday";
break;
}
return DayName;
}
}
}
解决方案
为了使用变量的值,您需要确保无论执行采用哪条路径,您的变量都会收到一个值。实际上,您不能保证,因为执行可能会采用一条路径,并且您的变量不会收到任何值。那是当它不进入开关盒时,这是一个可选路径。
此外,此验证不考虑语义。例子:
int a;
int b = 1;
if (b == 1) {
a = 2;
}
return a; // This causes an error
虽然执行总是会进入 if,因为b
总是等于 1,但是 ifs 总是被认为是一个可选的代码块,所以不能保证a
会及时为return
.
推荐阅读
- python - 通过 pymeasure 连接 Thorlabs 功率计
- r - 闪亮在 R 文件夹上运行不需要的脚本
- android - 键盘处于活动状态时,登录和注册页面不滚动,颤动应用程序
- c# - C#拦截用户输入/通过键盘限制用户输入
- qt - Qt 项目:将 misc 文件复制到 Windows 用户目录
- qml - 无法在 TreeView 中设置 selectionMode
- sql - 根据逗号分隔值更新
- xml - 具有一个元素的 XSD 在另一个重复元素之间出现一次(以任何顺序)
- java - Java进程中的OutOfMemoryException,但Used Heap大约是Used Size的一半
- javascript - 如何让 d3.zoom 为内联 svg 工作?