当我读到Java时,我通常会看到描述为基本类型或对象类型的变量。
当我读到C#时,我通常会看到描述为基本类型或非基本类型的变量?
术语对象类型和非基本类型之间有什么区别?
答案 0 :(得分:5)
这种混淆的一部分可能在于,在C#中,(mostly) everything inherits from Object。要以相同的方式引用Object类型,将引用该语言中的每个类型,并且基本上是无用的。
在C#中,基本类型是Boolean,Byte,Char,Double,Int16,Int32,Int64,IntPtr,SByte,Single,UInt16,UInt32,UInt64,UIntPtr。这些类型仍然继承自对象,尽管语言对它们的处理方式不同。 不从对象继承的几种类型,但它们不是您认为的原语(即接口)。可以使用此代码从here:
获取C#原语列表var primitives = typeof(int).Assembly.GetTypes().Where(type => type.IsPrimitive).ToArray();
如果你想要这样一个更合适的二分法,那就是价值类型与参考类型。当您开始考虑这种差异时,您可以包括诸如枚举类型和其他值类型之类的内容,例如结构。
答案 1 :(得分:0)
:
原始变量分为8种数据类型:boolean,byte,short,int,long,float,double和char。每个原始变量在内存中都有自己的空间范围。引用变量,指的是对象(Array,String,ArrayList,StringBuilder,...),并且与引用的对象的空间无关。
<强>差异:强>
1.references类型可以被称为null / primitives。
2.references类型可用于在不指向null / primitives使用文字时调用方法。
3.references类型具有所有相同的大小/原语取决于 数据类型
4.primitives声明以小写/ java类开头 大写