暑假转瞬即逝,从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#简单介绍及托管代码的更多相关文章

  1. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  2. salesforce lightning零基础学习(一) lightning简单介绍以及org开启lightning

    lightning对于开发salesforce人员来说并不陌生,即使没有做过lightning开发,这个名字肯定也是耳熟能详.原来的博客基本都是基于classic基于配置以及开发,后期博客会以ligh ...

  3. 【Hadoop离线基础总结】impala简单介绍及安装部署

    目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...

  4. C语言基础知识(四)——位操作

    一.进制基础知识 1.通常,1字节(Byte)包含8位(bit).C语言用字节表示储存系统字符集所需的大小. 2.对于一个1字节8位的二进制数,最右边(第0位)是最低阶位,最左边(第1位)是最高阶位, ...

  5. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  6. for、while循环(java基础知识四)

    1.循环结构概述和for语句的格式及其使用 * 什么是循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把 ...

  7. php基础知识(很简单一套适合零基础的朋友学习)

    红色的一般都是重点,还有自己的一些废话 运算符 算术运算符: 基本运算(除数不能为0) 比较运算符: 大小比较(类型比较), 如果两个类型不一样,系统会自动转换成统一类型 赋值运算符: 基本赋值和运算 ...

  8. Java的基础知识四

    一.Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基 ...

  9. Android学习之基础知识四-Activity活动3讲(Intent的使用)

    主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...

随机推荐

  1. IE浏览器报Promise未定义的错误、解决vuex requires a Promise polyfill in this browser问题

    一个vue-cli构建的vue项目,一个使用angular的项目,两个项目在其他浏览器一切正常,但是ie中会报Promise未定义的错误 解决办法: 一.vue的项目: 1.npm install b ...

  2. Android -- Fragment注意事项

    ViewPager+Fragment 让Fragment成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragmen ...

  3. MySQL bin-log与主从服务器

    试验环境                                                                                       Ubuntu    ...

  4. 在Fedora8上安装MySQL5.0.45的过程

    本来想安装最新的5.6.13-1版本,下载下来后,依赖的包rpmlib无处下载,无法只得作罢.从Foreda8的安装光盘中找到了以下文件: mysql-5.0.45-4.fc8.i386.rpm my ...

  5. Chrome浏览器内嵌的各种手机模拟器

    打开chrome的控制台标签,然后,点击simulator子标签页,选择需要的手机即可,如下图: 模拟器如下: 阅读原文:Chrome浏览器内嵌的各种手机模拟器

  6. Python网络爬虫 - 下载图片

    下载博客园的logo from urllib.request import urlretrieve from urllib.request import urlopen from bs4 import ...

  7. cmd命令之set详解

    C:\Users\Administrator>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Administrator\AppData\ ...

  8. B/S与C/S的差别

    前一段时间已经结束了C/S的学习,開始了B/S的旅程,那么为什么我们要学习这两个,这两个有什么差别呢?这些差别你知道多少呢? B/S结构.即Browser/Server(浏览器/server)结构.是 ...

  9. HDUOj Ignatius and the Princess III 题目1002

     母函数  组合数学 #include<stdio.h> int c1[125]; int c2[125]; int main() { int n,i,j,k; while(scanf ...

  10. 如何理解VB窗体中的scale类属性及width height属性之间的关系

    如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...