C# 基础知识 (四).C#简单介绍及托管代码
暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了非常多东西,也学到了非常多东西,也认识到了非常多不足之处!闲暇之余我准备又一次进一步巩固C#相关知识,包含C#入门知识、C#并行开发、ASP站点等.这篇文章我介绍的是书籍——C#入门经典(Beginning C#) 作者Karli Watson.主要包含的是我自己缺乏的一些C#简单介绍知识和托管代码的内容.内容比較简单,參照该书籍较多,相当于自己的在线笔记!
《C#入门经典》书籍章节简单介绍:
第01-14章 C#语言:C#简单介绍及与.NET关系,语法和OOP
第15-17章 Windows编程:使用.NET Framework各种控件
第18-20章 Web编程:使用ASP.NET运行任务、ajax
第21-24章 数据訪问:数据保存磁盘、XML、LINQ
第25-27章 其它技术:WPF、WCF、WF
一. 创建.NET应用程序步骤
创建.NET应用程序经历四个过程例如以下:
1.使用某种.NET兼容语言(如C#)编写应用程序代码
2.把代码编译为CIL,存储在程序集中
3.在执行代码时(可执行文件自己主动执行或其它代码使用它时执行),首先必须使用JIT编译器将代码编译为本机代码
4.在托管的CLR环境下执行本机代码以及其它应用程序或进程
二. 托管代码
首先对上面的术语进行简单的解释.
CIL 在编译使用.NET Framework库的代码时,不是马上创建专用于操作系统的本机代码,而是把代码编译为通用中间语言(Common Intermediate Language,CIL)代码.
JIT Just-In-Time编译器的任务是把CIL编译为专用于OS和目标机器结构的本机代码,OS才干运行应用程序.
CLR Common Language Runtime,公共语言执行库:负责管理用.NET库开发的全部应用程序的执行.
程序集 编译应用程序时,所创建的CIL代码存储在一个程序集中.程序集包含可运行的应用程序文件(.exe)和其它应用程序使用的库(.dll).
过去经常须要把代码编译为几个应用程序,每一个应用程序都用于特定的OS和CPU结构,如今JIT编译器使用CIL代码(CIL代码独立于计算机、OS和CPU)编译为本机代码.
托管代码 将代码编译为CIL,再用JIT编译器将它编译为本机代码后,CLR(公共语言执行库)的任务没有所有完毕,还要管理正在执行的用.NET Framework编写的代码(执行代码的阶段叫执行时runtime).即CLR管理着应用程序,其方式是管理内存、处理安全性及同意进行垮语言调试.相反,不受CLR控制执行的应用程序属于非托管类型.
换句话说:
托管代码 (managed code)是由公共语言执行库CLR环境(而不是直接由操作系统)执行的代码.
非托管代码(Unmanaged Code)在公共语言执行库环境的外部,由操作系统直接执行的代码.
非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务,而托管代码从CLR环境中获得这些服务.
举例:非托管类型如C++内存管理和分配,调用构造函数,使用完后释放内存.可是在C#中,仅仅能编写在托管环境下执行的代码,使用CLR的托管功能让.NET自己与OS进行交互.
两者差别可參照 http://bbs.csdn.net/topics/330164764
垃圾回收 托管代码最重要的一个功能就是垃圾回收(garbage collection),这样的.NET方法可确保应用程序不再使用某些内存时,全然释放这些内存.会定期检查计算机内存,从中删除不再须要的内容.
三. C#编写应用程序
C#使用的是.NET Framework没有限制应用程序的类型,常见的应用程序类型例如以下:
1.Windows应用程序
这些应用程序(如微软office)具有熟悉的Windows外观和操作方式,使用.NET Framework的Windows Forms模块(一个控件库,当中控件如button,可用于创建Windows用户界面UI)能够生成这样的应用程序.还能够使用WPF(Windows Presentation Foundation)建立更灵活卓越的Windows应用程序.
2.Web应用程序
是一些Web页面,可通过不论什么Web浏览器查看.其.NET Framework包含一个动态生成Web内容的强大系统,同意进行个性化和安全性等.这个系统叫Active Server Pages.NET(ASP.NET),使用C#通过Web Forms创建ASP.NET应用程序.还能够使用Silverlight编写在浏览器内部执行的应用程序.(接下来wo须要学习研究的东西)
3.Web服务
这是创建各种分布式应用程序的新方式,使用Web服务能够通过Internet虚拟交换数据.高级功能还能够创建WCF(Windows Communication Foundation)服务.
补充一些概念知识例如以下图:
总结:该文章主要是关于C#知识的基础简单介绍知识和托管代码解说,当中主要參照书籍《C#入门经典》,推荐大家学习C#的入门书籍.同一时候后面将讲述一些自己薄弱方面的基础知识,同一时候想结合自己想做的东西解说些知识.假设有错误或不足之处还请海涵!高手飞过~
(By:Eastmount 2014-8-17 夜12点 原创CSDN http://blog.csdn.net/eastmount/)
C# 基础知识 (四).C#简单介绍及托管代码的更多相关文章
- Python基础知识(四)
Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...
- salesforce lightning零基础学习(一) lightning简单介绍以及org开启lightning
lightning对于开发salesforce人员来说并不陌生,即使没有做过lightning开发,这个名字肯定也是耳熟能详.原来的博客基本都是基于classic基于配置以及开发,后期博客会以ligh ...
- 【Hadoop离线基础总结】impala简单介绍及安装部署
目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...
- C语言基础知识(四)——位操作
一.进制基础知识 1.通常,1字节(Byte)包含8位(bit).C语言用字节表示储存系统字符集所需的大小. 2.对于一个1字节8位的二进制数,最右边(第0位)是最低阶位,最左边(第1位)是最高阶位, ...
- iOS开发基础-UITableView控件简单介绍
UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动. UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...
- for、while循环(java基础知识四)
1.循环结构概述和for语句的格式及其使用 * 什么是循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把 ...
- php基础知识(很简单一套适合零基础的朋友学习)
红色的一般都是重点,还有自己的一些废话 运算符 算术运算符: 基本运算(除数不能为0) 比较运算符: 大小比较(类型比较), 如果两个类型不一样,系统会自动转换成统一类型 赋值运算符: 基本赋值和运算 ...
- Java的基础知识四
一.Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基 ...
- Android学习之基础知识四-Activity活动3讲(Intent的使用)
主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...
随机推荐
- 【MySQL】MySQL统计NULL字段处理
select A.user_id,ifnull(sum(ifnull(A.ex_cpu,0)),0) AS a0, ifnull(sum(ifnull(A.ex_mem,0)),0) AS a1, i ...
- 转: MAC认证码的说明
转: http://blog.sina.com.cn/s/blog_4940e1fc01012vk3.html MAC(Message Authentication Code) 消息认证码(带密钥的H ...
- Win10系统下软件UI显示不完整解决方案
在最初升级win10的时候就想到了这些问题,例如和各种软件的不兼容性.当然,事实上win10并没有想象的那么糟,作为一个windows user 来说,win10的确是很高大上的,无论是颜值或者是体验 ...
- 实战:INNOBACKUPEX for mysql 5.6自己主动还原脚本-v2
脚本再次更新,共享一下! #!/bin/sh # # 用法: # ./restore.sh /你备份文件的全路径 #ocpyang@126.com INNOBACKUPEX=innobackupex ...
- 如何做windows server 2008 R2 的磁盘清理
参考如下的链接: https://technet.microsoft.com/en-us/library/ff630161(v=ws.10).aspx 运行后可能没有啥反应,磁盘空间也没增大.那是因为 ...
- (剑指Offer)面试题61:按之字形顺序打印二叉树
题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...
- 支持各种控件上/下拉刷新的android-pulltorefresh
android- pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,如ListView.ViewPager.WevView. ExpandableListView.Grid ...
- 矩阵经典题目四:送给圣诞夜的礼品(使用m个置换实现对序列的转变)
https://vijos.org/p/1049 给出一个序列,含n个数.然后是m个置换,求对初始序列依次进行k次置换,求最后的序列. 先看一个置换.把置换表示成矩阵的形式.然后将m个置换乘起来.那么 ...
- Linux学习笔记——Ubuntu更新软件源
0.前言 通过改动ubuntu软件源可提高apt命令下载安装软件的速度. 參考资料 [官方资料]--配置文件改动方法 [Ubuntu如何改动软件源地址]--使用ubun ...
- iphone openssh
安装openssh 用户名:默认是 root 密码:默认是 alpine 修改登陆密码:passwd