gpt4 book ai didi

c# - 解决 PrimativeType.TryParse

转载 作者:行者123 更新时间:2023-11-30 19:34:35 24 4
gpt4 key购买 nike

我已经习惯使用 TryParse 来尝试解析未知类型:

Dim b As Boolean
Dim qVal As Boolean = If(Boolean.TryParse(Request.QueryString("q").Trim(), b), b, False)

bool b;
bool qVal = (Boolean.TryParse(Request.QueryString("q").Trim(), out b) ? b : false;

所以,很好奇是否有人知道除了使用三元运算符之外还有更好的方法。


解决方案

你好,

由于帖子已经关闭,我确信这个解决方案会被埋没,但我创建了一个非常酷的类,它使用我得到的建议解决了上述问题。只是想把代码放在那里,以防有人偶然发现这个线程并想使用它:

public static class PrimitiveType
{
/// <summary>
/// This function will return a parsed value of the generic type specified.
/// </summary>
/// <typeparam name="valueType">Type you are expecting to be returned</typeparam>
/// <param name="value">String value to be parsed</param>
/// <param name="defaultValue">Default value in case the value is not parsable</param>
/// <returns></returns>
public static valueType ParseValueType<valueType>(string value, valueType defaultValue)
{
MethodInfo meth = typeof(valueType).GetMethod("Parse", new Type[] { typeof(string) });
if (meth != null)
{
try
{
return (valueType) meth.Invoke(null, new object[] { value });
}
catch (TargetInvocationException ex)
{
if (ex.InnerException.GetType() == typeof(FormatException) || ex.InnerException.GetType() == typeof(OverflowException))
{
return defaultValue;
}
else throw ex.InnerException;
}
}
else
{
throw new ArgumentException("Generic type must be a valid Value Type that has a Parse method.");
}
}
}

使用起来非常简单。只需将您期望的类型作为泛型传入,并提供要解析的字符串值和默认值,以防字符串不可解析。如果您提供类而不是原始类型,它将抛出 new ArgumentException("Generic type must be a valid Value Type that has a Parse method.");

最佳答案

我以前在我自己的类中包装了查询字符串。然后我可以做类似下面的事情:

var qs = new QueryString(Request.QueryString);
bool q = qs.Get<bool>("q");

关于c# - 解决 PrimativeType.TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com