我可以在C#中实现从字符串到布尔的隐式'转换'吗?
问题描述:
有什么办法可以实现隐含转换从string
到bool
使用C#?我可以在C#中实现从字符串到布尔的隐式'转换'吗?
E.g.我有字符串str
与价值Y当我尝试转换(投)到boolean
它必须返回true
。
答
号不能创建用户定义的转换不转换到网络或来自他们在声明的类型。
,你可以很容易地来将是一个扩展方法,例如最近
public static bool ToBoolean(this string text)
{
return text == "Y"; // Or whatever
}
然后,您可以使用:
bool result = text.ToBoolean();
但你不能让这个隐式转换 - 即使你可以,我建议你不要对可读性的原因。
答
这是一种可用于任何字符串的扩展方法。
public static bool ToBoolean(this string input)
{
var stringTrueValues = new[] { "true", "ok", "yes", "1", "y" };
return stringTrueValues.Contains(input.ToLower());
}
下面是使用该扩展方法的一个例子:
Console.WriteLine("y".ToBoolean());
其结果将是True
。
答
您需要自己制作该方法。没有办法只是将一个字符串投射到布尔。我相信,如果字符串不为空,你将会得到真正的结果。只要创建一个布尔方法返回true,如果它传递的字符串是y或否则为
'bool b = str ==“Y”;' – 2015-02-11 17:03:40
@NadiaChibrikova,no!我的意思是:当我做bool b =(boolean)str; – LINQ 2015-02-11 17:05:28
不,你不能那样做。 – 2015-02-11 17:06:06