布尔字符串

时间:2016-04-01 19:25:15

标签: c#

如何创建一个字符串,例如“你做到了!”从布尔传递/失败而不仅仅是“真”或“假”出现?我只能找到ToString方法,但所有这一切都将“True”改为“true”。我想知道如何根据需要制作字符串输出。

6 个答案:

答案 0 :(得分:7)

bool是一种类型,与string类型相同。你永远不会得到一个bool类型来表示"你做到了!",因为它是一个bool - 它只能是真或假。

你想要的是根据boolean的结果创建一个字符串。听起来你想要if声明:

string myString;
if(myBool) // if true
{
    myString = "You did it!";
}
else
{
    myString = "You didn't do it";
}
像@juharr所显示的那样,有很多方法可以用更少的代码来实现这一点,但这是需要发生的逻辑。

作为旁注,您会在ToString上看到bool方法,因为从System.Object继承的每个类型都会继承ToString方法,为您提供字符串表示形式宾语。它不适用于您想要在此完成的任务。

答案 1 :(得分:2)

如果您使用的是C#3.0或更高版本,您也可以将其放在extension method bool 中,如下所示:

public static string ToDidItOrNotString(this bool b)
{
    return b ? "You did it!" : "You did not do it.";
}

然后你就可以这样称呼它:

string s = boolVal.ToDidItOrNotString();

答案 2 :(得分:0)

要在使用数据绑定时在视图中显示字符串,您可以使用自定义IValueConverter:

public class BoolToStringConverter : IValueConverter
{
    public string TrueString { get; set; }
    public string FalseString { get; set; }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var boolValue = (bool)value;

        return boolValue ? TrueString : FalseString;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

XAML:

<stackOverflow:BoolToStringConverter x:Key="BoolToStringConverter" TrueString="You did it!" FalseString="You didn't do it"/>

<TextBlock Text="{Binding WasItDone, Converter={StaticResource BoolToStringConverter}}"/>

答案 3 :(得分:0)

我认为创建Extension Method就越接近你想要的东西。

创建BoolExtensions类:

public static class BoolExtensions
{
    public static string ToString(this bool boolean, string valueIfTrue, string valueIfFalse)
    {
        return boolean ? valueIfTrue : valueIfFalse;
    }
}

然后你可以这样做:

static void Main(string[] args)
{
    var trueBoolean = true;
    Console.WriteLine(trueBoolean.ToString("You did it!", "You didn't do it"));
    var falseBoolean = false;
    Console.WriteLine(falseBoolean.ToString("You did it!", "You didn't do it"));
    Console.ReadKey();
}

请注意,BoolExtensions类及其ToString方法都标记为static

答案 4 :(得分:0)

您不能在c#中覆盖已知类型的ToString方法,但是您可以创建扩展方法,如果您在代码的许多部分使用此字符串,则可以为此创建一个方法:

public static class Extensions
{
    public static string ToStringCustom(this bool booleanValue)
    {
        if(booleanValue)
          return "You did it";
        else
          return "You didn't do id";
    }
}

然后当您使用布尔变量时,此方法将可用,例如:

Console.WriteLine(true.ToStringCustom())

这将打印&#34;你做了它&#34;。

答案 5 :(得分:0)

如果要在多个位置使用此功能,可以创建类似;

的扩展方法
public static string YouDidIt(this bool value )
{
    if (value) return "You did it!";

    return "You failed";
}

然后就可以使用它了;

bool a = true;
string s = a.YouDidIt();