【问题标题】:Is class or struct是类还是结构
【发布时间】:2011-03-08 04:29:48
【问题描述】:

如何检查类型是类还是结构?

 protected   T GetNullValue<T>(IDataReader reader, int ordinalId)
    {
        if (reader.IsDBNull(ordinalId))
        {
            //if T is struct.....
            //else if I is class
        }
        return (T)reader.GetValue(ordinalId);
    }

【问题讨论】:

  • 您可能会发现这个答案很有帮助:stackoverflow.com/questions/2713900/…
  • @Aim - 我不太确定。在我看来,接受的答案特别糟糕。
  • 在你现有的问题上添加另一个问题是不好的形式。它使现有的答案无效,并且整个帖子以后都会让人们感到困惑。

标签: .net c#-4.0


【解决方案1】:
if (default(T) is ValueType)
   ...

是我目前能想到的最有效的方法。

【讨论】:

    【解决方案2】:

    获取对象的Type 类,并检查它。

    Type t = reader.GetValue(ordinalId).GetType();
    if (t.IsValueType){
        //Struct
    } else { 
        //Class
    }
    

    如果您尝试动态处理结果,我怀疑您稍后会在代码中使用 Type 对象。

    【讨论】:

    • 该代码无法编译。您不能将typeof 与对象实例一起使用,您必须使用GetType()
    【解决方案3】:

    如果 T 是值类型,则不能为 null。要使值类型可以为空,您必须使用 System.Nullable 结构体。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多