如何使用"case"语句而不是"if"语句测试值是否在范围内?

use*_*441 8 delphi syntax if-statement case-statement

可以将以下if语句转换为case语句吗?

if (Number >= 5) and (Number <= 10) then
  lblAnswer.Caption := 'in range'
else
  lblAnswer.Caption := 'out of range';
Run Code Online (Sandbox Code Playgroud)

我的答案 :

是的,它可以

case (number >= 5) and (Number <= 10) of
  lblAnswer.Caption := 'in range';
  lblAnswer.Caption := 'out of range';
end;
Run Code Online (Sandbox Code Playgroud)

它是否正确?

da-*_*oft 25

如果Number有一些整数数据类型,那么:

case number of
5 .. 10: lblAnswer.Caption := 'in range';
else     lblAnswer.Caption := 'out of range';
end;
Run Code Online (Sandbox Code Playgroud)

  • 当然,只有在数字是整数而不是浮点类型时,这才有效. (4认同)

use*_*287 8

一个小小的修正:

case (number >= 5) and (Number <= 10) of
  true:lblAnswer.Caption := 'in range';
  false:lblAnswer.Caption := 'out of range';
end;
Run Code Online (Sandbox Code Playgroud)

  • 哇,这是一个非常滥用的`case`声明! (8认同)
  • +1这是使用`case`对它进行编码的正确方法,但老实说,没有兴趣在这里使用`case`而不是`if ... then`语句. (3认同)
  • -1.我无法支持布尔案例陈述.它们可能会混淆编译器,从而使程序员感到困惑.(有关此主题的冗长讨论,请[新闻组搜索布尔案例陈述](http://groups.google.com/groups/search?q=boolean+case+statement+kennedy),并将我的名字包含在搜索条件.) (2认同)