.net 异常处理,C#栈和堆的区别

C#语言提供了异常处理机制,利用try、catch和finally关键字处理运行时错误。CLR和.NETFramework可生成异常,且密封类(sealed)不允许继承。内存分为栈和堆,栈处理快速但空间有限,适合基础类型;堆存储大对象,读取速度较慢,由程序员通过new操作符管理。栈存储值类型,堆存储引用类型及其对象,两者在内存分配和管理上有显著差异。
摘要由CSDN通过智能技术生成
.net 异常处理

C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。 异常处理功能使用 try、catch 和 finally 关键字来尝试执行可能失败的操作、在你确定合理的情况下处理故障,以及在事后清除资源。 公共语言运行时 (CLR)、.NET Framework/任何第三方库或应用程序代码都可以生成异常。 异常是使用 throw 关键字创建而成。

.net 不能被继承类

在C#中定义了关键字sealed,被sealed修饰的类不能够被继承。在Java中同样也有关键字final表示一个类不能被继承。C++11提供final关键字使得类不能够被继承。

C#栈和堆

我们把内存分为堆空间和栈空间

  • 线程堆栈:简称栈 Stack 栈空间比较小,但是读取速度快
  • 托管堆: 简称堆 Heap 堆空间比较大,但是读取速度慢

栈的特征:数据只能从栈的顶端插入和删除把数据放入栈顶称为入栈(push)从栈顶删除数据称为出栈(pop)

堆:堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除

栈 vs 堆:区别?

栈通常保存着我们代码执行的步骤,而堆上存放的则多是对象,数据等。我们可以把栈想象成一个接着一个叠放在一起的盒子。当我们使用的时候,每次从最顶部取走一个盒子。栈也是如此,当一个方法(或类型)被调用完成的时候,就从栈顶取走,接着下一个。堆则不然,像是一个仓库,储存着我们使用的各种对象等信息,跟栈不同的是他们被调用完毕不会立即被清理掉。


栈存储的是基本值类型,堆存储的是new出来的对象。引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。
当我们程序执行的时候,在栈和堆中分配有四种主要的类型:值类型,引用类型,指针,指令。


栈:所分配的内存是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存

堆:一般由程序员分配释放(new), 若程序员不释放,程序结束时可能由操作系统回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanglamei1962

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值