我可以在C#中实现从字符串到布尔的隐式'转换'吗?

我可以在C#中实现从字符串到布尔的隐式'转换'吗?

问题描述:

有什么办法可以实现隐含转换从stringbool使用C#?我可以在C#中实现从字符串到布尔的隐式'转换'吗?

E.g.我有字符串str与价值Y当我尝试转换(投)到boolean它必须返回true

+0

'bool b = str ==“Y”;' – 2015-02-11 17:03:40

+0

@NadiaChibrikova,no!我的意思是:当我做bool b =(boolean)str; – LINQ 2015-02-11 17:05:28

+0

不,你不能那样做。 – 2015-02-11 17:06:06

号不能创建用户定义的转换不转换到网络或来自他们在声明的类型。

,你可以很容易地来将是一个扩展方法,例如最近

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或否则为