回答
检查this是否有帮助。
'System.ValueType'也从'System.Object'继承。因此,通过这种逻辑,所有的值类型都是引用类型。 –
(上述评论在AkharRoop编辑后包含图形后不再有效。) –
如果你仔细阅读Remarks你会看到
数据类型分为值类型和引用类型。值 类型是堆栈分配或内联分配在结构中。 引用类型是堆分配的。参考和值类型都是从最终基类Object派生的 。 如果值类型的行为类似于对象所必需的 ,则 使值类型看起来像引用对象的包装将分配到 堆上,并将值类型的值复制到其中。标记为 ,系统知道它包含值类型。这个过程 被称为拳击,相反的过程被称为拆箱。 装箱和拆箱允许任何类型被视为一个对象。
C#编译器做了出色的工作,让你觉得值类型,如int
long
有方法
他们确实有方法。这不是幻觉。 –
@Eric虽然编译器做了一个可爱的工作,帮助抖动有效地代表我们,由于受限操作码的帮助,它们可以很好地调用它们;) – ShuggyCoUk
@Eric Lippert:如果我有一个结构体(例如'System.Collections.Generic.List'1 + Enumerator [System.Int32]')并调用盒装实例的方法(例如'IEnumerable
如果你是在QI和史蒂芬·弗莱在做的是什么易受影响的白痴自以为聪明的人他的正常的事情是这样的,那么他会对“任何不从System.ValueType继承的对象因此必须根据定义成为引用类型”来做出反应,并使用klaxon和闪烁的屏幕显示“所有对象都是值类型或引用类型”。
然后,他会继续指出,最初在计算机科学中,对象表示任何可以被计算机操纵的实体,因此包括指针,即使它们不具有指针符合对象的后续定义(后面的表示带有某种屈尊的色调),它指的是用他们的方法封装的对象,因此你错了。
艾伦戴维斯会指出,每个人都知道你的意思,但已经太晚了,你的发言只会助长弗莱温和的自鸣得意,尤其是因为技术可能仅次于奥斯卡王尔德队伍他喜欢认为自己可以聪明地谈论(也许在他一无所知的事物队伍中是首屈一指的,现在我想起来,他无法设法说出上述内容,也没有错某种方式)。
换句话说,是的,你是完全正确:)
(对不住那些谁没见过什么英国的电视,因此没有什么线索任何这意味着)。
当QI出现时,我倾向于翻身;-) –
明智的选择。不幸的是,我的孩子往往不会,所以我只是指出错误和“正确”的答案,只是玩语义。 –
- 1. 检查对象类型是否继承抽象类型
- 2. 检查一个对象是否从一个类型继承
- 3. 是否所有对象都从NSObject继承?
- 4. PyQt类是否继承对象?
- 5. 继承类从对象
- 6. 所有从同一个类继承的对象映射,调用对象方法而不是父对象; C++
- 7. 从Java类继承的Kotlin类是否也从Any继承?
- 8. 类,对象,继承?
- 9. 如何从继承类型的对象中获取BaseType类型的对象?
- 10. 如何将对象转换为不从其继承的类型?
- 11. 是否可以根据组件类型和/或继承类型测试对象?
- 12. 对于每个继承类类型,继承的静态成员是不同的?
- 13. 使用yield return返回从基类型继承的对象
- 14. 为什么继承对象类型
- 15. ProtoBuf-Net:从父类继承对象类型[]的[ProtoMember]
- 16. 得到继承的对象从EF4类
- 17. 从共享对象中的类继承
- 18. 从对象中继承类定义类型为元类吗?
- 19. 是否有可能从JavaScript Function对象继承?
- 20. 是否可以继承COM对象?
- 21. 是否需要显式继承对象?
- 22. 传递对继承自抽象基类的类的引用
- 23. 如何使用JSON创建从对象类型继承的对象?
- 24. 从Python 3.x中的Python对象继承是否有必要或有用?
- 25. 添加从单个类继承的不同类的对象
- 26. C++自引用对象和继承
- 27. C#继承和对象引用
- 28. 继承通用类T必须是引用类型
- 29. 使用对象/继承类的链表
- 30. 从内建类继承是否正确?
请看这里:http:// stackoverflow。com/questions/3503568/system-valueetype-understanding –
指针既不是。不能称他们为对象。 –
@HansPassant你可能故意钝,并说他们是另一种意义上的对象(例如,它们会被称为C中的对象)。尽管如此,你必须非常刻意地说,它们并不是.NET世界中的“对象”。 –