(一行如果)?布尔是真的 - 给我一个字符串

时间:2017-10-12 16:40:32

标签: c# .net

即使我已经阅读了很多stackoverflow线程,我也无法绕过它。

我检查页面是否具有如下所示的特定属性值:

bool categoryCount = CurrentPage.HasValue("blogCategories");

我想将它转换为单行if语句,这样我就可以将字符串解析为类,如下图所示:

string situation = (categoryCount.ToString() == "true") ? '' : '';
PS:我为我的想法/目标背后缺少的逻辑道歉。我是编程新手。

3 个答案:

答案 0 :(得分:3)

怎么样:

string situation = (CurrentPage.HasValue("blogCategories"))
                   ? "Has the value" : "Has NOT that value";

你应该改变两件事:

  1. 不能使用ToString() == "True" ,只需将布尔值(表达式)放在三元运算符的条件部分中:调用{{ 1}}此外,如果规范发生变化,它可能会停止工作(实际上ToString()返回true.ToString(),带有大写,因此它不适用于您的代码);
  2. 使用字符串文字 "True",而不是字面文字"some string":结果应该是'a',而不是string。< / LI>

    char进行比较时,这不起作用:

    "true"

    但即使它可行,也会相当不安全:如果以后.NET库的设计者改变主意,那么你的程序可能会停止正常工作。通常我认为依靠csharp> true.ToString() "True" csharp> true.ToString() == "true" false 方法的格式更好。这些往往是文化特定的,而且通常不会对输出格式提供严格的约束。

答案 1 :(得分:2)

您不需要将bool转换为字符串以查明它是否为true

如果categoryCount具有布尔值true,您知道这会返回什么?

bool x = categoryCount.ToString() == "true";

返回布尔值true。如果categoryCounttrue,则为真,其字符串表示形式等于“true”。但categoryCount已经true了。

与此完全相同:

bool x = categoryCount;

此外,C#中的字符串使用双引号,而不是单引号。

所以:

string situation = categoryCount ? "one string" : "another string";

答案 2 :(得分:2)

您无需转换为字符串即可使用三元组。你可以简单地这样做:

string situation = categoryCount ? "Executes if true" : "Executes if false";

三元条件不需要是字符串,只需要返回。