无法隐式转换字符串'到' System.TypeCode'

时间:2017-06-21 09:07:39

标签: c# syntax-error

只是想知道是否有人知道如何解决此错误?我还使用了TypeCode.,但仍然没有运气。谢谢

case typeof(Nullable<int>).ToString(): //<----- error is here
if ((!object.ReferenceEquals(value, DBNull.Value)))
{
    return value;
}
else
{
    return null;
}

这是开关

    public static object HandleDBNull(object value, System.Type _type)
{
    switch (Type.GetTypeCode(_type))
    {

再次感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您在switch语句中使用的类型必须与case语句中的类型相匹配,目前您正在将TypeCodestring进行比较

TypeCode枚举仅包含基元类型的值,而其他所有枚举类型都为TypeCode.Object。因此,您无法获得TypeCode类型的特定 Nullable<int>

答案 1 :(得分:0)

最终,typeof(Nullable<int>)不是TypeCode,其字符串表示形式不是TypeCode。没有TypeCode代表Nullable<int> 具体

您可以使用Nullable.GetUnderlyingType(type)检查某些内容是否为Nullable<T>并同时获取T(如果没有,则返回null),您可以使用{ {1}}关于结果,但是:我怀疑在你的情况下,在所有中使用Type.GetTypeCode 可能是一个错误,只需检查类型本身({{1} })可能会更好。