If statement C#7中的条件语句

If statement C#7中的条件语句,if-statement,switch-statement,c#-7.0,If Statement,Switch Statement,C# 7.0,我想避免遵循写作风格。 只要指出超出范围,就应该写一次 var a = 100; // valid range 1..100_000 int32 var b = 10_000; // valid range 100..30_000_000 int32 if( a <= 1000) { // avoid overflow if( b < a * 100) { // both out of range } } else if( b &l

我想避免遵循写作风格。 只要指出超出范围,就应该写一次

var a = 100;   // valid range 1..100_000 int32
var b = 10_000; // valid range 100..30_000_000 int32

if( a <= 1000)
{
    // avoid overflow
    if( b < a * 100)
    {
       // both out of range
    }
}
else if( b < 100_000)
{
    // both out of range
}
var a=100;//有效范围1..100_000 int32
var b=10_000;//有效范围100..30_000_000 int32

如果(a我想你可能想要类似的东西,将这两个分支组合在一个语句中

if ((a <= 1000 && b < a * 100) || (a > 1000 && b < 100_000)) {
  // Out of range branch
} else {
  // In range branch
}
if((a 1000和b<100_000)){
//超出范围分支
}否则{
//范围内分支
}

谢谢你的意见。但是它有一个坏条件。b<100000匹配没有变量a条件。你能提供一个值表和预期结果吗?简单地说,这是a b对下限的验证。
var lessEqual1000 = "a <= 1000";
var greater1000 = "a > 1000";
switch( a <= 1000 ? lessEqual1000 : greater1000)
{
case lessEqual1000 when b < a* 100:
case greater1000 when b < 100_000:
    // both out of range
}
if( b < (a < 1000 ? a * 100 : 100_000))
{
    // both out of range
}
if( b < Math.Min( a * 100, 100_000))
{
  // both out of range
}

// following style hit upon me...
if( b < Math.Min(Math.BigMul(100, a), 100_000))
{
    // both out of range
}
if ((a <= 1000 && b < a * 100) || (a > 1000 && b < 100_000)) {
  // Out of range branch
} else {
  // In range branch
}