我正在阅读这篇WPF教程http://blogs.vertigo.com/personal/alanl/Blog/Lists/Posts/Post.aspx?ID=18,我对本教程的CountToFontSizeConverter部分有疑问。有人可以向我解释退货声明,即
return ((minFontSize + count + increment) < maxFontSize) ?
(minFontSize + count + increment) : maxFontSize;
我理解这是一个条件,但语法看起来相当定制。如果可能,有人可以用更简单的方式重写这个吗?感谢
答案 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)
假设a
和b
是数字类型。情况并非总是如此,但这是一个很好的起点。
答案 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)