CLR Via C# 第五章(基元类型,引用类型与值类型)(1)——读书笔记
来源:互联网 发布:人文社科类书籍知乎 编辑:程序博客网 时间:2024/05/19 23:54
基元类型,引用类型与值类型
1.基元类型
基元类型:编译器直接支持的概念称作基元类型
简单来说,就是int,char,bool这些基本类型,基元类型会直接映射到Framework类库(FCL)中的类型,
如int会映射到System.Int32类型,所以,
int a=0;System.Int32 b=0;
两者等价,都会编译生成成相同的IL
直接使用FCL类型名称,更能够解决概念误差。
2.check与unchecked操作符
这两个操作符能够对单个表达式或域进行溢出的检查与否进行操作,若检查到溢出,则CLR会抛出OverflowException异常。
这个主要用于计算校验等。
3.引用类型与值类型
CLR支持两种类型:值类型与引用类型
引用类型总是从托管堆分配,C#中用new操作符返回对象内存地址,即指向对象数据的内存地址。
- 引用对象本身保存的是对象的内存地址
- 引用类型对象中其他字节(字段)总设为0
- 从托管堆分配对象时,可能强制执行一次垃圾回收
值类型的实例则一般在线程栈分配。
- 值类型对象本身包含了实例的字段,所以不包含指针
- 不受垃圾回收器控制
区分:任何称为类的类型都是引用类型,所有值类型都称为结构或枚举
private static class ReferenceVsValue { // Reference type (because of 'class') private class SomeRef { public Int32 x; } // Value type (because of 'struct') private struct SomeVal { public Int32 x; } public static void Go() { SomeRef r1 = new SomeRef(); // Allocated in heap SomeVal v1 = new SomeVal(); // Allocated on stack r1.x = 5; // Pointer dereference v1.x = 5; // Changed on stack Console.WriteLine(r1.x); // Displays "5" Console.WriteLine(v1.x); // Also displays "5" // The left side of Figure 5-2 reflects the situation // after the lines above have executed. SomeRef r2 = r1; // **Copies reference (pointer) only** SomeVal v2 = v1; // Allocate on stack & copies members r1.x = 8; // Changes r1.x and r2.x v1.x = 9; // Changes v1.x, not v2.x Console.WriteLine(r1.x); // Displays "8" Console.WriteLine(r2.x); // Displays "8" Console.WriteLine(v1.x); // Displays "9" Console.WriteLine(v2.x); // Displays "5" // The right side of Figure 5-2 reflects the situation // after ALL the lines above have executed. } }
0 0
- CLR Via C# 第五章(基元类型,引用类型与值类型)(1)——读书笔记
- CLR Via C# 第五章(基元类型,引用类型与值类型)(2)——读书笔记
- CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
- 读书笔记_CLR.via.c#第五章_基元类型_引用类型_值类型
- Read the "clr via C#" of 基元类型,引用类型,值类型(第五章)
- .Net框架程序设计-读书笔记(第五章 基元类型、引用类型和值类型)
- CLR Via C# 第四章 类型基础——读书笔记
- 带着问题读CLR via C#(三)基元类型,引用类型和值类型(上)
- 《.NET框架程序设计》第五章 基元类型、引用类型与值类型
- 《.NET框架程序设计》第五章 基元类型、引用类型与值类型
- 关于.NET(C#)中字符型(Char)与数字类型的转换, CLR via c# 读书笔记
- CLR VIA C# 可空值类型
- CLR via C# -----类型基础
- CLR Via C#读书笔记——可空值类型操作符运算【2011-01-14】
- CLR via C# 读书笔记(九)静态类,类型对象的生存周期
- 《CLR via C#》笔记——类型基础(4)
- 第五部分 基元类型、引用类型与值类型----读《Microsoft.NET框架程序设计》
- C# 基元类型 引用类型和值类型
- 网络拦截和抓包
- JAVA中的进制转换
- nyoj 58 最少步数(深搜dfs)
- Quartz笔记(二) cron表达式格式
- swift字符串
- CLR Via C# 第五章(基元类型,引用类型与值类型)(1)——读书笔记
- DataGrid 行编辑并保存
- 回调函数例子
- Git与SVN/CVS的区别
- 基本的OpenGL语法及其相关的知识。
- hello
- swift字符串转为oc
- swift字典
- HMM 评估问题