一、C#与.Net 的关系

1)C#语言

  1. C#是一种简洁、类型安全的面向对象语言,可以使用C#语言创建可以在.Net Framework上运行的应用程序

  2. C# 语言功能取决于.Net 的功能,依赖于.Net 基类。也就是C#编写的代码使用.Net Framework运行。

  3. C#只是用于生成.Net 环境的代码,但本身不是.Net 的一部分

2).Net 平台

  1. .Net Framework的核心是运行库执行环境(CLR)

  2. C#源码首先需要编译成Microsoft中间语言(IL),运行库环境(CLR)将中间语言编译成平台专用的代码。

  3. IL编译即时编译(JIT),并不是将整个应用程序都一次性编译完(这样启动时间会很长),它只编译他调用的那部分代码

  4.IL编译成的中间语言使它能支持平台无关性

  5.IL还支持语言互操作。就是任何一种语言编译为中间语言之后,可以与其他语言编译过来的中间语言进行交互。一种语言编写的类可以直接与另一种语言编写的类进行通信

3).Net 支持的语言:

  VB.Net(Visual Basic 6 以前不适合)、Visual C++ 6、F#

4)语言之间的互操作实现

数据类型:

  .Net 中使用通用类型系统(CTS)定义了中间语言中使用的预定义数据类型,所有面向.Net Framework的语言都可以生成基于这些类型的编译代码

  如:VB语言中的Integger类型映射到中间语言为Int32,C#语言使用int来表示Int32

公共语言规范(CLS):

  CLS 是一个最低标准集,所有面向.Net 的编译器都必须支持它。

二、面向.Net 的所有语言都需要支持的IL特征:

  1.支持面向对象可以使用接口。

  2.值类型和引用类型的区别

      1)值类型直接在栈内存存储数据

      2)引用类型在堆内存存放地址,通过地址来找到对应的数据

  3. 强数据类型

  4.使用异常处理错误

  5. 使用特性(attribute)

三、程序集

  1. 程序集(assembly)是包含编译好的,面向.Net Framework的代码逻辑单元

  2. 反射

  程序集存储了元数据,元数据中包含了程序集中定义的所有类型和类型的成员细节,可以通过反射访问这些元数据

四、.Net 4.5 基类

  • IL提供的核心功能(CTS中的基本数据类型等)
  • Windows UI支持和控件
  • ASP.NET 的Web窗体和MVC
  • ADO.Net 和XML进行数据访问
  • 文件系统和注册表访问
  • 网络和Web浏览
  • .Net特性和反射
  • COM互操作性

C# 高级编程01----.Net基础介绍的更多相关文章

  1. Linux高级编程--01.vi命令

    VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠 ...

  2. shell编程01—shell基础

    01.学习shell编程需要的知识储备 1.vi.vim编辑器的命令,vimrc设置 2.命令基础,100多个命令 3.基础.高端的网络服务,nfs,rsync,inotify,lanmp,sersy ...

  3. Shell高级编程学习笔记(基础篇)

    目录 1.shell脚本的执行方法  2.shell的变量类型  3.shell特殊变量 4.变量子串的常用操作  5.批量修改文件名实践   6.变量替换 7.在shell中计算字符串长度的方法  ...

  4. UNIX环境高级编程——计算机体系结构基础知识

    无论是在CPU外部接总线的设备还是在CPU内部接总线的设备都有各自的地址范围,都可以像访问内存一样访问,很多体系结构(比如ARM)采用这种方式操作设备,称为等都会产生异常. 通常操作系统把虚拟地址空间 ...

  5. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  6. Linux环境高级编程--介绍

    从今天開始.将开启Linux环境高级编程(Advanced Programming Of Linux Enviroment)的学习笔记或者说总结,我将持续和大家分享自己的学习成果.本系列博客依托于li ...

  7. linux高级编程基础系列:线程间通信

    linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线 ...

  8. Linux C高级编程——网络编程基础(1)

    Linux高级编程--BSD socket的网络编程 宗旨:技术的学习是有限的,分享的精神是无限的. 一网络通信基础 TCP/IP协议簇基础:之所以称TCP/IP是一个协议簇,是由于TCP/IP包括T ...

  9. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  10. javascript高级编程笔记01(基本概念)

    1.在html中使用JavaScript 1.  <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...

随机推荐

  1. 关键字:This(上)

    对象初始化内存图: this 是一个关键字,表示对象本身,本质上this中存有一个引用,引用对象本身. this用于访问本对象属性,同时解决局部变量和成员变量同名的问题(接有参构造中第二种解决方案.. ...

  2. UOJ22 UR #1外星人(动态规划)

    https://www.cnblogs.com/Gloid/p/10629779.html 这一场的D. #include<bits/stdc++.h> using namespace s ...

  3. Miller_Rabbin&&Pollard_Rho 学习笔记

    占坑,待填 I Intro 首先我们考虑这样一个问题 给定一个正整数\(p(p<=1e8)\),请判断它是不是质数 妈妈我会试除法! 于是,我们枚举$ \sqrt p$ 以内的所有数,就可以非常 ...

  4. 1068: [SCOI2007]压缩

    题解: 区间DP 考虑状态的设计: \(dp[i][j][0/1]\)表示原字符串的\(i-j\)区间有无在中间加\(M\).并且默认在\(i\)之前加入\(M\)压缩后的最小长度,显然有转移: \[ ...

  5. win10更改无线网卡的MAC地址

    https://blog.csdn.net/qq_31778495/article/details/80932472 前段时间电脑蹭网被禁了MAC地址,故寻找修改MAC地址的方法. 本机配置: win ...

  6. @Controller @RestController

    知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1) 如果只是使用@RestController注解Controller,则Co ...

  7. java的数组

    作用:存储相同类型的一组数组,相当于一个容器,存放数据的.对同种数据类型集中存储.管理.便于遍历 数组类型:就是数组中存储的数据的类型 特点:数组中的所有元素必须属于相同的数据类型,数组中所有元素在内 ...

  8. (模拟) codeVs1083 && 洛谷P1014 Cantor表

    题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/ ...

  9. I2C(三) linux3.4(内核分析)

    目录 I2C(三) linux3.4(内核分析) (一)总线流程 bus.probe match i2c_device_probe (二)client注册 方式(一)静态加载 方式(二)指定设备 方式 ...

  10. 关于FastDBF库读写ArcGis dbf文件的小bug

    该库托管于GitHub,地址:https://github.com/SocialExplorer/FastDBF 贡献者应该都是老外,所以…… 1.解析文件头,字段名部分如果有中文命名字段会出错 在D ...