c# - c# if语句,switch语句
问题描述
让我们更容易。在这种情况下,最后返回有波浪线。我应该在最后输入什么来接收 VK_F2 作为方法的返回值?
internal uint AssignStartShortcut()
{
switch (currentStartValue)
{
case "F2":
return VK_F2;
}
return;// how this should look?
}
如果我在 swith 之后不使用 return 那么我有消息:不是所有的代码路径都返回值。
解决方案
您的错误很可能是:
使用未分配的局部变量“名称”
C# 编译器不允许使用未初始化的变量。如果编译器检测到使用了可能尚未初始化的变量,则会生成编译器错误 CS0165。有关详细信息,请参阅字段。请注意,当编译器遇到可能导致使用未分配变量的构造时会生成此错误,即使您的特定代码没有。这避免了过于复杂的明确分配规则的必要性。
轻松修复,初始化它:
internal uint AssignStopShortcut()
{
uint stopNumber = 0;
switch (currentStartValue)
...
或者确保静态分析器知道它不能通过(即它总是被初始化)
uint stopNumber;
switch (currentStartValue)
{
case "F3":
stopNumber = VK_F3;
return stopNumber; //squigly lines below
default:
// no other options
throw new InvalidOperationException("Bazzinga!");
}
或者更好的是,只返回常量,不要使用局部变量。
internal uint AssignStopShortcut()
{
switch (currentStartValue)
{
case "F3":
return VK_F3; //squigly lines below
default:
throw new InvalidOperationException("Bazzinga!");
}
}
推荐阅读
- apache - 试图在互联网上托管我的本地主机。我在这里想念什么?
- .net-core - .NET Core 2.2 发布因缺少 *.pdb 和 *.xml 而失败
- spring - 在 DTO 中我们可以使用 id 作为 String 还是 Long
- c# - C#中的#符号是什么
- python - 如何将 CSV 导入到两个使用 Python 相互引用的不同 SQL 表中
- vue.js - 无法安装 vuetify
- java - 如何检查一个类是否依赖 CDI 来创建实例?
- typescript - 具有客户端实用程序定义结构的基本 TypeScript NodeJS 程序,使用严格的编码规则
- python - 无法导入 .py 文件,没有名为“文件名”的模块错误
- python - 摆脱嵌套的for循环