c# – 类不从对象继承?
我正在使用一种使用反射来检查方法的参数类型的方法.该方法遍历ParameterInfo,并且正在使用这些参数的类型.
我总是假设如果TypeInfo.IsClass为true,那么这个类型是一个类,并且始终从类型对象派生(间接)(除非当类型是对象本身时).因此,如果TypeInfo.IsClass为true,则必须设置TypeInfo.BaseType. 那我的假设是错的!有类不能从类型对象派生.我的假设搞砸了我的代码. 例如: Type type = typeof(int).MakeByRefType(); type.IsClass将为true,type.BaseType将为null. 如果你考虑,这是合乎逻辑的.我可以通过检查TypeInfo.IsByRef来防止我的代码崩溃. 现在我的问题是:是否有更多这样的“异国情调”类型(包括ByRef类型和类型对象),它们是一个类(IsClass == true),但没有基类型(BaseType == null)? 在你回答之前:我只是引用IsClass == true的类型!而我的int类型的例子只是一个例子.它可能是任何类型. >接口 答案到目前为止 > ByRef类型(T&):作为问题中的描述. 解决方法
我会说IsClass在这里只是误导.它指出:
它以这种方式实现:它检查标志是否包括Interface,以及它是否是ValueType. 不幸的是,这里有更多的东西.指针不是管理类型. by-ref与指针非常相似.指针不是对象,尽管通常使用该转换实际上是一个取消引用/转换.同样适用于诸如直接指针(如int *)的东西. 不是.NET中的一切都是对象:) var baseType = typeof(int*).BaseType; // null bool liesAndMoreLies = typeof(int*).IsClass; // true Eric Lippert covers this more here: Not everything derives from object – 并列出了一些其他例子(例如打开通用类型). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |