首页 > 解决方案 > c# if语句,switch语句

问题描述

让我们更容易。在这种情况下,最后返回有波浪线。我应该在最后输入什么来接收 VK_F2 作为方法的返回值?

internal uint AssignStartShortcut()
    {
        switch (currentStartValue)
        {
            case "F2":
                return VK_F2;
        }
        return;// how this should look?
    }

如果我在 swith 之后不使用 return 那么我有消息:不是所有的代码路径都返回值。

标签: c#

解决方案


您的错误很可能是:

编译器错误 CS0165

使用未分配的局部变量“名称”

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!");
   }
}

推荐阅读