即使我已经阅读了很多stackoverflow线程,我也无法绕过它。
我检查页面是否具有如下所示的特定属性值:
bool categoryCount = CurrentPage.HasValue("blogCategories");
我想将它转换为单行if语句,这样我就可以将字符串解析为类,如下图所示:
string situation = (categoryCount.ToString() == "true") ? '' : '';
PS:我为我的想法/目标背后缺少的逻辑道歉。我是编程新手。
答案 0 :(得分:3)
怎么样:
string situation = (CurrentPage.HasValue("blogCategories"))
? "Has the value" : "Has NOT that value";
你应该改变两件事:
ToString() == "True"
,只需将布尔值(表达式)放在三元运算符的条件部分中:调用{{ 1}}此外,如果规范发生变化,它可能会停止工作(实际上ToString()
返回true.ToString()
,带有大写,因此它不适用于您的代码); "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
。如果categoryCount
为true
,则为真,其字符串表示形式等于“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";
三元条件不需要是字符串,只需要返回。