5.1.1 基本类型、值类型和对象
在 C# 中,我们可以使用基本值类型(例如,整数或字符),用struct 关键字声明的自定义值类型(例如,日期时间),和类。值类型和引用类型主要差别在于它们的行为,但是只能在类是可变时,才能观察到。例如,字符串看起来像值类型,实际是引用类型,因为它是不可变的,意味着,只要使用的是不可变类型,几乎可以消除值和引用类型之间的差异;唯一的差异只在性能上,行为是相同的。
我们还可以看到在 C# 中类型的复杂性,这种区别并不那么明显,因为,即使基本类型是标准的值类型,也有方法,可以实现接口。不可变值类型相比有虚方法和可变状态的对象,要简单得多。
在函数语言中,首先有一组基本类型,可以通过不同的方式,组合基本类型,构成更复杂的类型。这不同于面向对象的语言,根据基本类型,通过定义其状态创建类型,使用方法指定其行为。
函数方法使整个类型系统相当容易,因为,从原理上讲,值类型和引用类型之间没有区别;另外,从简单类型过渡到复杂的复合类型更平滑。在这个意义上,所有的基本类型是值,大多数简单的复合类型也是值;要想知道复合类型复杂到什么程度,而不能认为是值了,必须了解什么是数据。
C#类型详解:基本类型、结构体类型与对象的区别

本文深入探讨了C#编程中的类型概念,包括基本类型、结构体类型和对象的区别。重点阐述了这些类型在行为上的差异,特别强调了不可变类型与可变对象之间的相似性及复杂性。此外,文章还对比了函数语言与面向对象语言在类型系统方面的特点,展示了C#类型系统的灵活性和复杂性。
1129

被折叠的 条评论
为什么被折叠?



