我可以在 C# 中实现从字符串到布尔值的隐式 'conversion' 吗?
Can I implement an implicit 'conversion' from string to boolean in C#?
有什么方法可以使用 C# 实现从 string
到 bool
的 隐式 转换?
例如我的字符串 str
的值为 Y,当我尝试转换(转换)为 boolean
时,它必须 return 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 则 returns 为真,否则为假
有什么方法可以使用 C# 实现从 string
到 bool
的 隐式 转换?
例如我的字符串 str
的值为 Y,当我尝试转换(转换)为 boolean
时,它必须 return 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 则 returns 为真,否则为假