Ken*_*Kin 5 .net c# reflection types
摘要
typeof(ISomeInterface).BaseType是null; typeof(object).BaseType也是null根据定义.从而:
typeof(object).BaseType==typeof(ISomeInterface).BaseType -> true
Run Code Online (Sandbox Code Playgroud)
它(语义上)可能意味着System.Object一个接口,不是吗?在c#中,所有类都继承自System.Object,但接口不继承.接口实际上是契约,而不是任何类的基类型,并且只能从其他接口派生.
所以我想知道是否typeof(object).BaseType应该与接口相同?
说明
我认为这是基本的数学逻辑.I处理null为0和typeof(object)为1,使得找到的基类型某种类型的就像找到许多的因素.
在这种假设下,null可以是任何类型的推导,例如0任意数量的倍数.并且typeof(object)将是任何类的基本类型,就像1是任何数字的因素,甚至本身.实际归国null的typeof(object).BaseType,但是,打破了这一假设.这似乎说这0是一个因素,1但不是任何其他数字的因素.
此外,如果我们使用一种方法来SomeType递归地找到基类型,我们不能总是说它SomeType不是一个类,因为它BaseType是null,typeof(object).BaseType也是null.
如果这似乎是矛盾的
typeof(object).BaseType==typeof(object) -> true
Run Code Online (Sandbox Code Playgroud)
提出它的基本类型本身,但实际上并不是实体和合同之间的区别?
更新:
我最初说过:
它可能意味着
System.Object一个接口,不是吗?
我想说的是它似乎很困惑.这是我表达不好的描述的错,并且很抱歉导致答案集中在那上面.
typeof(object).BaseType == typeof(SomeInterface).BaseType
Run Code Online (Sandbox Code Playgroud)
是真的只是因为以下情况也是如此:
null == null
Run Code Online (Sandbox Code Playgroud)
并且,根据定义,如果当前类型表示对象类或接口,则BaseType返回null.
它可能意味着System.Object也是一个接口,不是吗?
实际上不是,因为接口只包含方法的签名,而不包含它们的实现.您可以将接口视为类必须实现的合同.
该BaseType属性返回具有基本类型的类型的基本类型.对于所有其他类型,则返回指示该类型不具有值一基本类型.您在原始问题中提出以下表达式:
typeof(object).BaseType == typeof(SomeInterface).BaseType
然后你建议,因为这个表达式是真的,Object并且SomeInterface看起来具有相同的基类型.但是,您的结论存在缺陷,因为它假定两者都存在基类型,Object并且SomeInterface当方法的文档明确指出不是这种情况时.
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |