gpt4 book ai didi

c# - Convert.ChangeType 从 int 到 bool

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:26 24 4
gpt4 key购买 nike

如果需要,使用以下方法从查询字符串中获取值并转换为特定类型。

public static T Convert<T>(NameValueCollection QueryString, string KeyName, T DefaultValue) where T : IConvertible
{
//Get the attribute
string KeyValue = QueryString[KeyName];

//Not exists?
if (KeyValue == null) return DefaultValue;

//Empty?
if (KeyValue == "") return DefaultValue;

//Convert
try
{
return (T)System.Convert.ChangeType(KeyValue, typeof(T));
}
catch
{
return DefaultValue;
}
}

会这样调用

int var1 = Convert<int>(HttpContext.Current.Request.QueryString,"ID", 0);

但是,当尝试执行以下操作时,它无法正常工作,所以我的问题是,如果从 querystring 变量中检索的值是 1 或 0 而不是 true ,是否可以更改代码来处理 boolean 值错误。

ie... instead of
http://localhost/default.aspx?IncludeSubs=true
the call is
http://localhost/default.aspx?IncludeSubs=1

bool var1 = Convert<bool>(HttpContext.Current.Request.QueryString,"IncludeSubs", false);

最佳答案

您可以修改 convert 方法以按如下方式处理 boolean 值:

//Convert
try
{
var type = typeof(T);
if(type == typeof(bool))
{
bool boolValue;
if(bool.TryParse(KeyValue, out boolValue))
return boolValue;
else
{
int intValue;
if(int.TryParse(KeyValue, out intValue))
return System.Convert.ChangeType(intValue, type);
}
}
else
{
return (T)System.Convert.ChangeType(KeyValue, type);
}
}
catch
{
return DefaultValue;
}

通过这种方式,您可以转换为 boolean 值,例如:"true""False""0" “1”

关于c# - Convert.ChangeType 从 int 到 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19164291/

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