出来工作两年,发现自己进步太小了,工作能力是不能混的,想先从基础知识好好复习一下,再深入的学习一些高级框架和先进的理念。找回了博客园的密码账号,好好学习和总结。先从数据类型总结一下,无非就是值类型,引用类型,在菜鸟教程上看到一种指针类型,这个之前没学习到之后总结一下。说明一下,个人总结方便查看,快速的话推荐看菜鸟教程,实体书效果更好,我自己买了一本厚厚的C#...

c# .net关系,c#是语言,.net是框架。大体是这样,有时候面试题也会这样问c# .net关系,这样回答在百度上也可以百度到。个人对c#总结一下,c#是专门为Microsoft的.net framework一起使用设计,它是基于面向对象设计的语言。c#基于.net 两只一起使用。

.NET Framework的核心是公共语言运行库(CLR)或.NET运行库,一般将CLR控制台下运行的代码称为托管代码(managed code). 在.NET中完成编译的两种方法:1·将源代码转换为Microsoft中间语言。2·利用CLR把IL编译成平台专用代码。Microsoft中间语言的理念:低级语言,语法简单,(语法简单表现在它使用数字代码而不是文本代码),能快速的转换为本地机器码,对于代码来说这种设计具有重要的有点:平台无关性,提高性能和语言的互操作

说到托管这个词,就说一个垃圾回收,用来在.NET中进行内存管理,特别是它可以恢复正在恢复在运行的应用程序需要的内存,再说说资源托管与非资源托管 详细有点长引用下(https://www.cnblogs.com/88lang/p/3961797.html)这个是有次面试面到的一道题

托管资源:
Net平台中,CLR为程序员提供了一种很好的内存管理机制,使得程序员在编写代码时不要显式的去释放自己使用的内存资源(这些在先前C和C++中是需要程序员自己去显式的释放的)。这种管理机制称为GC(garbage collection)。GC的作用是很明显的,当系统内存资源匮乏时,它就会被激发,然后自动的去释放那些没有被使用的托管资源(也就是程序员没有显式释放的对象)。
 
所以托管就是.net framework 负责帮你管理内存及资源释放,不需要自己控制,当然对象只针对托管资源(部分引用类型), 不回收非托管资源。 像数组,用户定义的类、接口、委托,object,字符串等引用类型,栈上保存着一个地址而已,当栈释放后, 即使对象已经没有用了,但堆上分配的内存还在,只能等GC收集时才能真正释放 ;但注意int,string,float,DateTime之类的值类型,GC会自动释放他们占用的内存,不需要GC来回收释放
 
那么非托管的资源怎么释放回收呢?
非托管资源: 
对于非托管资源,GC只能跟踪非托管资源的生存期,而不知道如何去释放它。这样就会出现当资源用尽时就不能提供资源能够提供的服务,windows的运行速度就会变慢。比如当你链接了数据库,用完后你没有显式的释放数据库资源,如果还是不断的申请数据库资源,那么到一定时候程序就会抛出一个异常。
所以,当我们在类中封装了对非托管资源的操作时,我们就需要显式,或者是隐式的释放这些资源在.Net中释放非托管资源主要有2种方式,Dispose,Finalize,而Finalize和Dispose方法分别就是隐式和显式操作中分别使用到的方法。

例如文件流,数据库的连接,系统的窗口句柄,打印机资源等等,当你读取文件之后,就需要对各种Stream进行Dispose等操作。比如 SqlDataReader 读取数据完毕之后,需要 reader.Dispose();等
 
Finalize一般情况下用于基类不带close方法或者不带Dispose显式方法的类,也就是说,在Finalize过程中我们需要隐式的去实现非托管资源的释放,然后系统会在Finalize过程完成后,自己的去释放托管资源。在.NET中应该尽可能的少用析构函数释放资源,MSDN2上有这样一段话:实现 Finalize 方法或析构函数对性能可能会有负面影响,因此应避免不必要地使用它们。用 Finalize 方法回收对象使用的内存需要至少两次垃圾回收。所以有析构函数的对象,需要两次,第一次调用析构函数,第二次删除对象。而且在析构函数中包含大量的释放资源代码,会降低垃圾回收器的工作效率,影响性能。所以对于包含非托管资源的对象,最好及时的调用Dispose()方法来回收资源,而不是依赖垃圾回收器。

 还有.net 的一些 中间语言,反射,程序集就不多说 详细可以查查别的博客看看 

c#语法复习总结(1)-浅谈c#.net的更多相关文章

  1. 浅谈Kotlin(二):基本类型、基本语法、代码风格

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...

  2. 浅谈Kotlin(四):控制流

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 本篇介绍Kotlin ...

  3. 浅谈Kotlin(三):类

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...

  4. 浅谈Kotlin(一):简介及Android Studio中配置

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...

  5. 浅谈Swift语法

    Apple 在2014年6月的WWDC公布了一款新型的开发语言,很多美国程序猿的价值观貌似和我们非常大的不同,在公布的时候我们能够听到,场下的欢呼声是接连不断的.假设换作我们,特别是像有Objecti ...

  6. HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)

    HTTP协议漫谈   简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲 ...

  7. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  8. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  9. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  10. 浅谈Hybrid技术的设计与实现

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...

随机推荐

  1. Linux C/C++编译过程中的各种not declared in this scope

    Linux C/C++编译时经常会"XXX was not declared in this scope" 原因可能是以下几种: 变量名或函数名写错了; 忘记定义了 没有成功链接到 ...

  2. Nginx 高级配置--关于favicon.ico

    Nginx 高级配置--关于favicon.ico 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.浏览器会默认帮咱们访问官网的图标 1>.浏览器访问网站"htt ...

  3. 和群友聊HashTable转到树和图的数据结构

    AVL树 前中后遍历 树的遍历深度和广度 树是一种特殊的图 人脉关系属于图数据结构: 并查集 最小生成树 union find 正常图的遍历用广度也能做,但是速度低: 并查集可以降到logn 数据小的 ...

  4. MapReduce 简单开发

    先给出 maven 依赖配置 <properties> <hadoop.version>2.6.0</hadoop.version> </properties ...

  5. 201871010106-丁宣元 《2019面向对象程序设计(java)课程学习进度条》

    <2019面向对象程序设计(java)课程学习进度条> 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 1 25/10 ...

  6. ubuntu16.04深度学习环境配置

    https://www.lizenghai.com/archives/14651.html https://blog.csdn.net/qq_40936141/article/details/8119 ...

  7. 学习:API断点

    API的介绍:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而 ...

  8. learning shell check requires root privileges

    [Purpose]        Shell script check requires root privileges   [Eevironment]        Ubuntu 16.04 bas ...

  9. Windbg Scratch Pad(便笺簿)窗口的使用

    “便笺簿”窗口是一个剪贴板,您可以在其中键入和保存文本. 打开便笺簿 通过菜单View--->Scratch Pad 通过快捷键Alt+8 通过工具栏 使用便笺簿 用上面的方式打开的窗口如下: ...

  10. Layui 新标签打开

    原文:https://blog.csdn.net/sr_www/article/details/81394365 layuiAdmin 后台管理模板 iframe版 在新标签中打开网页 / 在ifra ...