I mean, I want to convert this:
string a = 24;
Convert.ChangeType(a, typeof(decimal?))
But it throws me an error.
UPDATE 1:开发者_运维问答
I've got a Type object where can be decimal?, int?, .. many nullable types. Then with the Type object, I need to convert the string value in type object.
See an excellent answer here:
public static T GetValue<T>(string value)
{
Type t = typeof(T);
t = Nullable.GetUnderlyingType(t) ?? t;
return (value == null || DBNull.Value.Equals(value)) ?
default(T) : (T)Convert.ChangeType(value, t);
}
E.g.:
string a = 24;
decimal? d = GetValue<decimal?>(a);
This is based on Dror's answer but has slightly less overhead when dealing with null values:
public static T GetValue<T>(string value)
{
if(value == null || DBNull.Value.Equals(value))
return default(T);
var t = typeof(T);
return (T)Convert.ChangeType(value, Nullable.GetUnderlyingType(t) ?? t);
}
You can't do this since Nullable<T>
don't implement IConvertable
.
You can do this although.
string a = 24;
decimal? aAsDecimal = (decimal)Convert.ChangeType(a, typeof(decimal));
Might I also interest you in TryParse
?
精彩评论