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

时间:2015-02-11 17:01:11

标签: c# .net type-conversion extension-methods implicit-conversion

有什么方法可以使用C#实现从stringbool隐式转换?

E.g。我的字符串str的值为 Y ,当我尝试将(转换)转换为boolean时,它必须返回true

3 个答案:

答案 0 :(得分:6)

没有。您无法创建用户定义的转化,这些转化不会转换为他们声明的类型。

你最容易接近的是扩展方法,例如

public static bool ToBoolean(this string text)
{
    return text == "Y"; // Or whatever
}

然后你可以使用:

bool result = text.ToBoolean();

但是你无法将其作为隐式转换 - 即使你可以,我建议你不要为了便于阅读。

答案 1 :(得分:4)

这是一个可用于任何字符串的扩展方法。

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

答案 2 :(得分:1)

您需要自己制作方法。没有办法只将一个字符串转换为bool。如果字符串不为空,你最终会得到true,我相信。只需创建一个布尔方法,如果传递的字符串为y,则返回true,否则返回