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