以下代码摘录无法编译,导致代码路径未返回值
。 Test1StandardChargeCalculator
和 Test2StandardChargeCalculator
类型都派生自返回类型。
我知道如何解决这个问题,但我的问题是我为什么必须这样做? bool
是一种值类型 - 因此只能表示 true 或 false,这两种情况都在此代码段中得到满足。那么编译失败的原因是什么?
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/