在C#中从bool转换为字符串的最简单方法是什么?

Beh*_*joo 4 c#

我很想使用,if ... else ...但我想知道是否有更简单的方法?我需要在消息框中显示true或false结果.

Mar*_*ers 14

bool.ToString方法已经做了你想要的.

此方法返回常量"True"或"False".

但是在实践中,通常不需要ToString直接从代码中直接调用.如果您已经在编写字符串,那么最简单的方法是使用连接:

string message = "The result is " + b;
Run Code Online (Sandbox Code Playgroud)

这将编译为一个调用,string.ConcatToString为您调用该方法.

在某些情况下,使用它会很有用String.Format,并且再次ToString为您调用该方法:

string message = string.Format("The result is {0}. Try again?", b);
Run Code Online (Sandbox Code Playgroud)

  • 是的C#不进行隐式转换,而是调用ToString方法. (8认同)
  • @lincolnk:String.Concat(在第一种情况下使用的)具有带有`object`参数的重载,因此所呈现的代码确实可以正常工作.(文档:http://msdn.microsoft.com/en-us/library/kbseaaft.aspx) (6认同)
  • 虽然代码有效,但我个人觉得最好拼出.ToString().我的眼睛更容易. (2认同)
  • @Chris Lively - 另外,在`String.Concat`上调用`string`而不是`object`重载是一个微优化,避免装箱bool(在这种情况下).由于某些原因,这让我对代码感觉更好. (2认同)

Ser*_*kov 9

bool b = true;
Console.WriteLine(b.ToString());
Run Code Online (Sandbox Code Playgroud)


Jon*_*nna 6

我要扔掉:

val ? "true" : "false"
Run Code Online (Sandbox Code Playgroud)

混合,因为通常需要小写结果(许多机器可读的格式,例如许多XML格式,对于布尔值使用小写"true"和"false")并且上面的更快也是IMO清洁比val.ToString().ToLowerInvariant().

当然,扩展到val ? "yes" : "no"等等是微不足道的.可定位是另一回事,并不总是微不足道的(如果翻译得很好,很多情况会有完全不同的句子,所以逻辑messageStart + (val ? "yes" : "no") + messageEnd并不总是很好.