文件名称:值类型和引用类型-python3+opencv3识别图片中的物体并截取的方法
文件大小:10.59MB
文件格式:PDF
更新时间:2024-07-30 07:08:49
.net之美 关键技术解析
1.1 值类型和引用类型 C#中的类型一共分为两类,一类是值类型(Value Type),一类是引用类型 (Reference Type)。值类型和引用类型是以它们在计算机内存中是如何被分配的来划分 的。值类型包括了结构和枚举,引用类型则包括了类、接口、委托等。还有一种特殊的值类 型,称为简单类型(Simple Type),比如byte,int等,这些简单类型实际上是BCL基类库 类型的别名。比如,声明一个int类型,实际上是声明一个System.Int32结构类型。因此,在 Int32类型中定义的方法或属性,都可以在int类型上调用,比如“123.Equals(2)”。 所有的值类型都隐式地继承自System.ValueType类型(注意System.ValueType本身是 一个类类型)。之所以说是“隐式地”,是因为在C#代码中,是看不到这个继承关系的,这个 关系只有通过MSIL代码才可以看到。System.ValueType类型和所有的引用类型都继承自 System.Object基类。 C#不支持多重继承,因为结构已经隐式地继承自ValueType,所以结构不支持继承。 说明 栈(stack)是一种后进先出的数据结构,在内存中,变量会被分配在栈上来进行操 作。堆(heap)是用于为引用类型的实例(对象)分配空间的内存区域,在堆上创建一个 对象,会将对象的地址传给栈上的变量(反过来叫变量指向此对象,或者变量引用此对 象)。 1.1.1 值类型 现在我们更详细地看一下值类型。当声明一个值类型的变量(Variable)的时候,变量 本身包含了值类型的全部字段,该变量会被分配在线程堆栈(Thread Stack)上。 假如有下面这样一个值类型,它代表了直线上的一点: