C# c带条件的条件语句|

C# c带条件的条件语句|,c#,fonts,if-statement,operators,C#,Fonts,If Statement,Operators,鉴于: 如何应用布尔值来确定应使用的字体样式?上面的代码使它们都适用,因此它是粗体、斜体、删除线和下划线,但我想根据布尔值进行筛选。好的,您可以这样做: bool isBold = true; bool isItalic = true; bool isStrikeout = false; bool isUnderline = true; System.Drawing.Font MyFont = new System.Drawing.Font( thisTempLabel.LabelFo

鉴于:


如何应用布尔值来确定应使用的字体样式?上面的代码使它们都适用,因此它是粗体、斜体、删除线和下划线,但我想根据布尔值进行筛选。

好的,您可以这样做:

bool isBold = true;
bool isItalic = true;
bool isStrikeout = false;
bool isUnderline = true;

System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold | FontStyle.Italic | FontStyle.Strikeout | FontStyle.Underline,
    GraphicsUnit.Pixel
);
您可以使用:


但我不确定我是否会。这有点棘手。请注意,这两个代码位都利用了常数0隐式转换为任何枚举类型的事实。

您可以这样做:

bool isBold = true;
bool isItalic = true;
bool isStrikeout = false;
bool isUnderline = true;

System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold | FontStyle.Italic | FontStyle.Strikeout | FontStyle.Underline,
    GraphicsUnit.Pixel
);
您可以使用:


但我不确定我是否会。这有点棘手。请注意,这两位代码都利用了常量0可以隐式转换为任何枚举类型的事实。

除了Jon Skeet所建议的之外,还有一种更奇特的字典方法。仅对四个项目来说,这可能有些过分,但也许你会发现这个想法很有用:

FontStyle style = 0 | (isBold ? FontStyle.Bold : 0)
                    | (isItalic ? FontStyle.Italic : 0)
                    etc

我喜欢的是国旗和相关风格之间的联系与“按位体操”完全分离。

除了Jon Skeet的建议之外,这里还有一个更有趣的字典。仅对四个项目来说,这可能有些过分,但也许你会发现这个想法很有用:

FontStyle style = 0 | (isBold ? FontStyle.Bold : 0)
                    | (isItalic ? FontStyle.Italic : 0)
                    etc

我喜欢的是国旗和相关风格之间的关联与“逐位体操”完全分离。

谢谢!只是学习了一下枚举,这对我来说现在更有意义了。@Thesen:是的,只是一个输入错误:谢谢!只是学习了一下枚举,这对我来说就更有意义了。@Thesen:是的,只是一个输入错误: