c# - 并非所有代码路径都会返回一个值 - 但它们会

标签 c# .net compiler-errors value-type

以下代码摘录无法编译,导致代码路径未返回值Test1StandardChargeCalculatorTest2StandardChargeCalculator 类型都派生自返回类型。

我知道如何解决这个问题,但我的问题是我为什么必须这样做? bool 是一种值类型 - 因此只能表示 truefalse,这两种情况都在此代码段中得到满足。那么编译失败的原因是什么?

internal StandardChargeCalculator Create()
{
      bool value = true;

      switch (value)
      {
          case true:
              return new Test1StandardChargeCalculator();
          case false:
              return new Test2StandardChargeCalculator();
      }
} //not all code paths return a value

最佳答案

当使用 switch 语句时,编译器不理解当您使用 bool 类型打开开关时只能有两个结果。

发生错误是因为您没有默认 大小写。

不要使用 switch 进行 bool 测试 - 使用 if 语句:

  bool value = true;

  if(value)
  {
      return new Test1StandardChargeCalculator();
  }

  return new Test2StandardChargeCalculator();

关于c# - 并非所有代码路径都会返回一个值 - 但它们会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939701/

相关文章:

android - XML格式不正确( token 无效)

c++11 - C++ 变量未在范围内声明

c# - 在内存中创建一个 "directory"?

c# - 如何实现基于 Web 的安装程序?

.net - 如何在winforms的设计模式下执行代码

.net - 使用SmtpClient发送邮件的最佳方式?

c# - 在 .NET 中避免双重转换(字节 [ ] 到字符串到单个)的方法?

c# - 使用成员函数启动线程

c# - DLL 项目 - 知道哪个环境调用了它吗? (网络/窗口/cmd)

android - 在Qt中编译项目时出现错误