• 基础类型相关
    .NET中所有内建类型都继承自System.Object,若同时继承自System.ValueType类则为值类型,否则为引用类型。

    值类型和引用类型的区别如下:

    1. 赋值时,值类型变量会直接获得真实数据的一个副本,而引用类型只会将对象的引用赋值给变量,会造成多个对象指向同一个内存区块(对象实例)的情况。
    2. 内存分配时,引用类型对象会在堆上分配内存,而值类型变量会在堆栈上分配内存,运行效率比堆高很多。
  • 装箱拆箱的概念
    装箱,指的是CLR需要做额外工作把堆栈上的值类型移动到堆上。
    拆箱,指的是把堆中的对象复制到堆栈中,返回其值。
    应该注意的是,装箱和拆箱行为,都对应了堆栈上的一系列操作,会造成较大的性能代价。因此减少程装箱拆箱操作,是程序性能优化的一个重点。
    避免装箱拆箱操作的思路,在于从两方面避免发生装箱拆箱行为的场合:
    1. 值类型的格式化输出。
    2. System.Object类型的容器。对于这种情况,可以使用泛型技术来避免使用System.Object类型的容器。

原文链接.NET基础拾遗(1)类型语法基础和内存管理基础