C# 基础知识 (四).C#简介及托管代码

2023-11-14

        暑假转瞬即逝,从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模块(一个控件库,其中控件如按钮,可用于创建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/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 基础知识 (四).C#简介及托管代码 的相关文章

  • 新手Github的打开及使用(托管代码);Git与小乌龟的安装;从0到1教程

    1 Github因网络问题无法打开的解决方案 2 Github用户注册 3 创建远程仓库 4 Git与小乌龟的安装 5 克隆远程到本地 6 上传本地至远程仓库 1 Github因网络问题无法打开的解决方案 因为Github的服务器在国外 x
  • C# 连接SQLServer数据库及登录验证知识

    最近在做联系数据库的系统项目 这里重新回顾了一些数据库的知识 主要是使用VS2012与SQL Server 2012简单的做了下面两个数据库的应用 虽然比较简单 但我认为这是非常有用的知识 尤其对刚接触这样的系统知识的同学 同时也巩固了自己
  • C++中unique函数

    C 中unique函数 文章一 unique是STL中很实用的函数之一 需要 include 感谢各位提醒 下面来简单介绍一下它的作用 unique的作用是 去掉 容器中相邻元素的重复元素 这里去掉要加一个引号 为什么呢 是因为它实质上是一
  • c++11:动态内存与智能指针

    为了更容易 同时也更安全 地使用动态内存 新的标准库提供了两种智能指针 smart pointer 类型来管理动态对象 智能指针的行为类似常规指针 重要的区别是它负责自动释放所指向的对象 新标准库提供的这两种智能指针的区别在于管理底层指针的
  • C++运算符的优先级

    有括号的优先级最高 涉及对象的运算符 自增自减 取值 取地址运算符 逻辑非 按位取反 强制类型转换 长度运算符 先乘除后加减 左移右移运算符 比较运算符 三目运算符 各类赋值运算符 逗号运算符优先级最低 注意 同一优先级的运算符 运算次序由
  • C++ malloc/free/new/delete详解(内存管理)

    这里写目录标题 malloc free 典型用法 内存分配 实现过程 brk和mmap 申请小于128k的内存 申请大于128k的内存 释放内存 brk和mmap的区别 new delete 典型用法 内存分配 实现过程 new delet
  • C# 基础知识 (五).变量类型和字符串处理

    这篇文章是阅读 C 入门经典 Beginning C 书籍里面的内容 作者Karli Watson 主要包括自己缺乏的一些C 基础知识和在线笔记使用 文章主要包括C 简单变量类型和复杂变量类型 命名规则 隐式转换和显示转换 变量字符串处理等
  • C# 系统应用之清空回收站操作

    由于毕业设计项目是基于U盘防御的软件 所以涉及些系统应用的知识 本文主要讲述的是如何通过C 代码实现清空回收站的资源 主要通过SHEmptyRecycleBin函数实现 一 SHEmptyRecycleBin函数 SHEmptyRecycl
  • cpp基础:对象和类

    1 类名首字母大写 Wakawaka 2 类接口 编写类的人提供的一个操作类成员的方法 3 通过关键字实现类成员的访问控制 4 封装 将实现细节和抽象分开被称为封装 如 h和 cpp文件分开 接口是实现封装的重要一环 5 默认访问权限pri
  • C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线

    目录 1 C C 在大数据时代的应用 1 1 C C 数据处理 1 2 C C 数据库 1 3 C C 图像处理和计算机视觉 1 3 1 导读 2 C C 程序员未来的发展路线 2 1 图导 1 C C 在大数据时代的应用 C C 在大数据
  • C++ 继承详解

    C 继承 继承语法 继承方式 private继承特点 改变访问权限 名字遮蔽 继承时的对象模型 无变量遮蔽 有变量遮蔽 final关键字 继承语法 继承的一般语法为 class 派生类名 继承方式 基类名 派生类新增加的成员 继承方式 继承
  • windows下dll文件的创建详细教程

    1 前言 dll文件是啥 就不作过多赘述了 现在直接教大家如何创建与使用dll文件 本文基于windows系统 使用的编译相关工具为visual studio 2019 2 创建dll 2 1 创建dll工程 首先打开visual stud
  • 【转】C++中的返回值优化

    C 中的返回值优化 在这边文章里用到了以下编译器和操作系统 大家请自行安装 uname ar Linux debian 4 9 0 3 amd64 1 SMP Debian 4 9 30 2 deb9u3 2017 08 06 x86 64
  • C++编译时多态和运行时多态

    编译时多态 运行时多态 两种多态的优缺点 多态就是指一个基类指针根据所指对象的不同而有不同的功能和行为 编译时多态 编译时多态 又叫静态多态 早绑定 编译时多态基于template 模板 的具现化与函数的重载解析 这种多态在编译期进行 因此
  • C++ 排序函数 sort(),qsort()的用法

    C库函数qsort C 库函数sort 其中qsort相对较慢 sort实现非常高效 qsort 功 能 使用 快速排序例程进行排序 头文件 include
  • C#实现百度地图附近搜索&调用JavaScript函数

    前一篇文章 C 调用百度地图API入门 解决BMap未定义问题 讲述了如何通过C 调用百度API显示地图 并且如何解决BMap未定义的问题 这篇文章主要更加详细的介绍百度地图的一些功能 包括附近搜索 城市搜索 路线规划 添加覆盖物等等 希望
  • C# 基础知识 (四).C#简介及托管代码

    暑假转瞬即逝 从10天的支教生活到1周的江浙沪旅游 在这个漫长的暑假中我经历了很多东西 也学到了很多东西 也认识到了很多不足之处 闲暇之余我准备重新进一步巩固C 相关知识 包括C 入门知识 C 并行开发 ASP网站等 这篇文章我介绍的是书籍
  • 修饰符-访问修饰符internal sealed

    摘自 internal C 参考 摘自 sealed C 参考 Internal 访问仅限于当前程序集 protected internal 访问限制到当前程序集或从包含派生的类型的类别 程序集就是代码编译后bin目录下生产的 exe或者
  • C++ 生命周期

    C 程序的生命周期要经过编码 Coding 预处理 Pre processing 编译 Compiling 和运行 Running 四个阶段 编码即coding阶段 这阶段主要是定义变量 写语句 实现各种数据结构 函数和类 预处理是 C C
  • C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开删除文件

    在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息 但仅仅是显示信息是不够的 我们还需要具体的操作 在 个人电脑使用历史痕迹 项目中我还需要添加 打开文件 和 删除文件 两种方法 具体如下 在第一篇文章 C 系统应用

随机推荐

  • 变量和数据类型

    变量概述 变量 它是在程序中最为基本的一种单一数据的存储方式 顾名思义它代表的就是存储的数据可以改变 可以改变的量 值 变量的组成 变量的数据类型 变量名 变量值 数据类型 数值类型 整数类型 1 2 3 0 1 byte 1字节 128
  • 启动MySQL报错ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost‘ (10061)

    这个错误是新手经常会遇到的 本文主要介绍如何修复ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 1 登录到安装Mysql的主机 打开cmd命令行工具 执行命
  • uniapp SyntaxError: Unexpected token u in JSON at position 0 解决方案

    今天在做页面跳转传值的时候 一直出现下面的报错 后来查看了下文档 说如果你的JSON数据是在上一个页面传值过来的话 这时候在接收数据页解析JSON也会报该错误 因为此时并没有相关的JSON数据从上一个页面传递过来 可以通过判断是否为null
  • Flutter 信息贴

    框架学习 在 Flutter 中构建绘图应用程序 了解如何在 Flutter 中创建绘图应用程序 并探索 Flutter 在 CustomPaint 小部件的帮助下渲染和控制自定义 UI 的能力 在 Flutter 中创建可重用的自定义小部
  • 【IntelliJ IDEA学习之七】maven专题

    版本 IntelliJIDEA2018 1 4 一 maven全局设置 设置Runner 运行VM参数 Xms128m Xmx512m Duser language zh Dfile encoding UTF 8 二 maven项目 参考
  • 手把手教你springboot企业微信开发(一)

    手把手教你springboot企业微信开发 一 1 配置企业号 2 Springboot配置企业号 1 配置企业号 企业号登录 设置 网址是 https work weixin qq com wework admin loginpage w
  • 三天打鱼两天晒网C语言代码

    include
  • mongodb 正则-不区分大小写匹配

    1 正则查询 不区分大小写 i 设置开始字段 结束字段 其中某段匹配任意字段 name regex lslad cn options i 或者 name lslad cn i 2 踩坑记录 java中使用正则查询 name lslad cn
  • 使用 jQuery 创建滚动视图

    jQuery 是一个流行的 JavaScript 库 它简化了 JavaScript 编程 并提供了许多实用的功能和方法 在 jQuery 中 你可以使用 scroll 方法来创建滚动视图 下面是一个详细的教程 帮助你了解如何使用 jQue
  • 再谈Jquery Ajax方法传递到action

    之前写过一篇文章 Jquery Ajax方法传值到action 本文是对该文的补充 假设 controller中的方法是如下 public ActionResult ReadPerson PersonModel model string s
  • 计组(唐第三版)

    目录 前言 讲解问题 1 快速理解基本的电路符号 a 高低电平 b 高电平有效和低电平有效的理解及表示 c 基本的门元件 2 数电小白也能看得懂的74138译码器 c 74138译码器结构功能 c 74138译码器具体结构 3 唐书例4 1
  • 最详细的Python安装+Pycharm安装配置教程,从下载到安装配置

    最详细的Python安装 Pycharm安装配置教程 从下载到安装配置 本章节我们将向大家介绍如何在本地搭建Python开发环境 Python可应用于多平台包括 Linux 和 Mac OS X 你可以通过终端窗口输入 python 命令来
  • docker-compose实现容器任务编排

    项目开发中 往往都需要启动多个容器 容器之间又相互依赖 存在着启动的顺序 docker compose就是可以通过命令控制依次启动容器 容器编排工具可以帮助我们批量地创建 调度和管理容器 帮助我们解决规模化容器的部署问题 Docker 三种
  • PyQt5 按钮Buttons样式设计

    效果截图 PyQt 模型设计 PyQt 设计器截图 ui 源码
  • 存储IOPS指标说明

    二 IOPS 说明 2 1 IOPS Input OutputPer Second IOPS 即每秒的输入输出量 或读写次数 是衡量磁盘性能的主要指标之一 IOPS是指单位时间内系统能处理的I O请求数量 一般以每秒处理的I O请求数量为单
  • 材料阅读 - 四散的安全

    20201005 阅读了三篇与安全相关的文章 这里记录一下 1 以 威胁应对 为中心 看企业信息安全能力建设 这篇文章发表在了很多地方 发表的念头也比较早了 都过了两年了 对企业的安全能力 从架构上 最后到以后的安全产品都进行了介绍 同时也
  • 多态性 - C++中实现运行时多态的方式

    一 概述 C 中的多态性是指同一个函数可以有多种不同的实现方式 并且在运行时根据实际情况进行选择执行 在C 中实现多态有两种方式 静态多态和动态多态 静态多态是指在编译时确定函数的实现 包括函数重载和模板函数 动态多态是指在运行时根据对象的
  • 针对无人机航拍视频中动态背景下的目标检测

    目录 目录 传统目标检测技术 传统目标检测技术 1 帧间差分 通过连续两帧相同位置像素点间的灰度差来确定目标移动 但只适用于静态背景和目标单一条件的目标检测 仅适用于无人机悬停状态下的目标检测 2 背景差分法 通过预先设置背景 然后通过对检
  • “体育游戏第一股”投资未来,望尘科技走向价值兑现周期

    2022年的游戏市场 遗憾以疲弱之势落下帷幕 游戏市场规模与用户数量 均出现了小幅下降 显示出存量市场的典型特征 但与此同时 更多垂直领域的拳头产品 响应市场需求的精品游戏 却屡屡掀起热潮 去年随世界杯而来的 最佳球会 就是一例 最佳球会
  • C# 基础知识 (四).C#简介及托管代码

    暑假转瞬即逝 从10天的支教生活到1周的江浙沪旅游 在这个漫长的暑假中我经历了很多东西 也学到了很多东西 也认识到了很多不足之处 闲暇之余我准备重新进一步巩固C 相关知识 包括C 入门知识 C 并行开发 ASP网站等 这篇文章我介绍的是书籍