条件语句语法帮助

时间:2011-01-18 17:18:32

标签: c# wpf

我正在阅读这篇WPF教程http://blogs.vertigo.com/personal/alanl/Blog/Lists/Posts/Post.aspx?ID=18,我对本教程的CountToFontSizeConverter部分有疑问。有人可以向我解释退货声明,即

return ((minFontSize + count + increment) < maxFontSize) ? 
         (minFontSize + count + increment) : maxFontSize;

我理解这是一个条件,但语法看起来相当定制。如果可能,有人可以用更简单的方式重写这个吗?感谢

5 个答案:

答案 0 :(得分:4)

不确定你的意思是“有些定制”,但值得打破。

原件:

return ((minFontSize + count + increment) < maxFontSize) 
      ? (minFontSize + count + increment) : maxFontSize;

细分:

bool condition = (minFontSize + count + increment) < maxFontSize;
if (condition)
{
    return minFontSize + count + increment;
}
else
{
    return maxFontSize;
}

更好的方法 - 更具可读性:

return Math.Min(minFontSize + count + increment, maxFontSize);

通常,您通常可以替换表单

的表达式
a < b ? a : b

Math.Min(a, b)

假设ab是数字类型。情况并非总是如此,但这是一个很好的起点。

答案 1 :(得分:0)

此:

return ((minFontSize + count + increment) < maxFontSize) ? (minFontSize + count + increment) : maxFontSize;

有效转换为:

if ((minFontSize + count + increment) < maxFontSize)
     return (minFontSize + count + increment);
else
     return maxFontSize;

在这种情况下,由于目标是防止表达式大于“maxFontSize”,我个人只是使​​用:

return Math.Min(minFontSize + count + increment, maxFontSize);

我发现这更清楚地表达了意图。

答案 2 :(得分:0)

这是ternary conditional operator(或简称为条件运算符)的示例,可以重写为:

if ((minFontSize + count + increment) < maxFontSize) 
{
  return minFontSize + count + increment;
}

return maxFontSize;

答案 3 :(得分:0)

var cache = (minFontSize + count + increment);

return (cache < maxFontSize) ? cache : maxFontSize;

答案 4 :(得分:0)

它只不过是来自C#的条件运算符。语法如下 条件? Statement1(如果为true):Statement2(如果为false) 如果条件返回true,则运行Statement1,如果结果为false,则运行Statement2。

在你的情况下if(minFontSize + count + increment)&gt; maxFontSize,maxFontSize被评估为else(minFontSize + count + increment)