暑假转瞬即逝,从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. Sql Server的弱口令入侵测试以及防范

    我之所以要做这样的测试是因为这一切都是有背景的!!!被黑客黑的代价!!!伤心ing..... 背景: 测试: 物理机:Win7 虚拟机:xp 扫描工具(我想我最好不写扫描器的名字比较好): 密码之所以 ...

  2. Android -- SharedPreferences存储信息

    背景                                                                                             Share ...

  3. 在CentOS/RHEL上设置SSH免密码登录

    本文会告诉你怎样在 CentOS/RHEL 上设置 SSH 免密码登录.自动登录配置好以后,你可以通过它使用 SSH (Secure Shell)和安全复制 (SCP)来移动文件. SSH 是开源的, ...

  4. windows CMD命令查看局域网内所有主机名及IP

    COLOR 0A CLS @ECHOOff Title查询局域网内在线电脑IP :send @ECHO off&setlocal enabledelayedexpansion ECHO 正在获 ...

  5. Error Lookup工具

    GetLastError()获取到的错误代码,可以通过VS2013自带的Error Lookup工具来查询错误的描述.

  6. [Bash] Create Aliases in .bash_profile for Common Bash Commands

    .bash_profile is a file that bash invokes (or more technically sources) before the start of a new ba ...

  7. Jacoco 代码覆盖率,监控WEB项目

    转载:https://blog.csdn.net/u010469432/article/details/73283824 jacococ代码覆盖率,以客户端形式直接监控远程代码 使用理解 jacoco ...

  8. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  9. 20个常用java代码段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...

  10. javaweb笔记全套

    Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Pr ...