小写Boolean.ToString()值

时间:2014-05-26 07:05:02

标签: c# asp.net-mvc boolean tostring

我正在将boolean的值输出到我的MVC视图中,并希望使用小写truefalse,而不是默认{{} 1}}或True

我感谢我能做到这一点:

False

或使用某种扩展方法等...

但它有点违背了目的:

@this.Model.MyBool.ToString().ToLower()

我在这里阅读了这篇文章:Why does Boolean.ToString output "True" and not "true"但大多数答案看起来都很旧。

还有更现代的方法吗?

3 个答案:

答案 0 :(得分:7)

为什么不尝试以下

public string MyStringBool
{
    get { return MyBool ? "true" : "false" ; }
}

答案 1 :(得分:6)

如果你只想要一个bool变量,你应该使用@Mohamed的方法。否则你可以创建一个扩展方法(正如你自己已经说过的那样):

public static class Extensions
{
    public static string ToLowerString(this bool _bool)
    {
        return _bool.ToString().ToLower();
    }
}

然后使用它:

public static void Main()
{
    bool testBoolean = true;
    Console.WriteLine(testBoolean.ToLowerString());
}

答案 2 :(得分:1)

您也可以这样做,在语法上感觉比true.ToString().ToLower()干净(我认为):

Json.Encode(true);

但是,与使用.ToString.ToLower()实现相比,这样做的开销要大得多。

Json.Encode(object value)具有更多的错误处理功能,因为它需要考虑将更复杂的对象作为参数传递的可能性。

我对此进行了一些基准测试,以查看实际的区别以及在我的开发箱烤面包机上的情况:

var sw0 = Stopwatch.StartNew();
sw0.Stop();

var sw1 = Stopwatch.StartNew();
var t1 = System.Web.Helpers.Json.Encode(true);
var e1 = sw1.ElapsedMilliseconds; // returns 6-9

var sw2 = Stopwatch.StartNew();
var t2 = true.ToString().ToLower();
var e2 = sw2.ElapsedMilliseconds; // returns 0

因此,一次过冲击的影响并不大。