C#语言类型
讨论
所有类型在,值类型,引用类型用new创建,值类型由编译器自动补全
int等引用类型是轻量化结构更像是结构体
值类型在栈中,引用类型在堆中
所有类型由类派生,可以说每个是对象,也可以不是
由于.NET Framework中的所有类都是从Object派生的,因此Object类中定义的每个方法都可用于系统中的所有对象。派生类可以并重写其中的一些方法。
由于C#没有单独的一组基本类型和对象类型。
争论
哲学
何为对象???什么是对象?:)我认为这就像一套数学。什么是“一切”? - Mehrdad Afshari 09年4月24日在13:24
wiki
一些面向对象的编程语言区分了引用类型和值类型,在运行效率和语法或语义问题等原因下,通常将这些类型称为不存在复杂值类型的平台上的对象和非对象。
Some object-oriented programming languages make a distinction between reference and value types, often referred to as objects and non-objects on platforms where complex value types don't exist, for reasons such as runtime efficiency and syntax or semantic issues.
个人观点
个人认为c#里的预置类型,不是基本类型,可以自己diy的。int这种是受限的类,类似于结构体。对象是不受限的类。
参考
https://msdn.microsoft.com/en-us/library/system.int32%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
https://baike.baidu.com/item/%E5%85%AC%E5%85%B1%E8%AF%AD%E8%A8%80%E8%BF%90%E8%A1%8C%E6%97%B6/4361434?fr=aladdin
https://en.wikipedia.org/wiki/Object_type_(object-oriented_programming)