C#的复习记录

一.net 的基本运行环境

1.net framework (.net 框架)

主要包括公共语言运行库(Common language runtime)CLR 和.net 类库(class library)CL

在这里插入图片描述

1) CTS通用类型系统(Common Type System)

CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展。任何 以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射。所有.NET语言共享这一类型系统,实现它们之间无缝的互操作。该方案还提供了语言之间的继承性。例如,用户能够在VB.NET中派生一个由C#编写的类。我们可以将CTS 看成是所有.NET 语言的superset (union),而符合CTS 的各种不同的语言,其实都只是CTS 的subset (intersection)。这些语言所写出来的程序,如果想要有最佳的相容性,以便互相调用(invoke) 或继承,这些语言之间就必需取得一个共同的subset,有共同遵守的规范,这就是CLS 。

2) CLS通用语言规范(Common Language Specification)

很显然,编程语言的区别不仅仅在于类型。例如,一些语言支持多继承性,一些语言支持无符号数据类型,一些语言支持运算符重载。用户应认识到这一点,因此.NET通过定义公共语言规范(CLS:Common Language Specification),限制了由这些不同引发的互操作性问题。CLS制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。认识到这点很重要,这里讨论的特征问题已不仅仅是语言间的简单语法区别。例如,CLS并不去关心一种语言用什么关键字实现继承,只是关心该语言如何支持继承。CLS是CTS的一个子集。这就意味着一种语言特征可能符合CTS标准,但又超出CLS的范畴。例如:C#支持无符号数字类型,该特征能通过CTS的测试,但CLS却仅仅识别符号数字类型。因此,如果用户在一个组件中使用C#的无符号类型,就可能不能与不使用无符号类型的语言(如VB.NET)设计的.NET组件实现互操作。

3) CLR公共语言运行库(Common Language Runtime)

简单地说,CLR是CTS的实现,也就是说,CLR是应用程序的执行引擎和功能齐全的类库,该类库严格按照CTS规范实现。作为程序执行引擎,CLR负责安全地载入和运行用户程序代码,包括对不用对象的垃圾回收和安全检查。在CLR监控之下运行的代码,称为托管代码(managed code)。

4)OS(操作系统)

2、有关程序集,命名空间,项目,解决方案的理解(摘自csdn博主)

一、 项目、解决方案、程序集、命名空间四个容易混淆的概念。
①项目: 就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库、Web应用程序等等。经过编译后,会生成.exe文件和.dll文件。

.exe文件有统一的主程序入口, 可以被执行,而类库只是提供一些功能给其他项目调用。

②解决方案: 当我们在VS中新建任何一种类型项目时,这个项目还属于一个解决方案。当我们的业务相对简单时,解决方案所发挥的作用并不是很大。但当我们开发复杂的软件时,需要多个模块组成。 比如说开发中常用的三层架构,U层是一个简单的windows应用程序(项目的一种类型)、B、D层由多个类库(项目的另一种类型)组成。通过一个解决方案,我们就可以将其(多个项目)组合起来,完成我们的开发。 形象地说,解决方案就是一个容器,在这个容器里,分成好多层,好多格,用来存放不同的项目。换句话来说:就是《程序集就是一个项目,多个项目构成一个解决方案》

③程序集: 一个项目就是一个程序集。一个程序集可以体现为一个dll文件,或者exe文件。

④命名空间: 主要是为了避免一个项目中,可能会存在的相同对象名的冲突。

对于编辑来说,命名空间仅仅是在类型名称前加了一些由点号隔开的符号而已.这使得一个类型的名称更长,从而也更具惟一性.如果两个相同的类在同一个命名空间则会冲突,如果不同的命名空间有相同的类型,也会产生二义性。 注意,C#的using指示符会指示编译器试着在类型名上添加不同的前缀,直到找到一个匹配为止,命名空间只是逻辑上,真正的类型在程序集里,当查找一个类型的定义时,编译器必须被告知到哪些程序集中进行查找,编译器将扫描它知道的所有程序集来查找类型的定义.一旦编译器找到了正确的程序,程序集信息和类型信息会被添加到生成托管模块的元数据中。重要提示:CLR不知道命名空间的任何事情。访问一个类型时,CLR需要知道类型的完整名称(这可能是一个相当长、包含句点符号的名称)以及该类型的定义具体在哪一个程序集中。这样一样,“运行时”才能加载正确的程序集,找到目标类型,并对其进行操作。
二、联系与区别
1、 命名空间是类库的逻辑组织形式,程序集就是类库的物理组织形式。
2、 一个程序集内可能有多个命名空间,一个命名空间可能存在于不同的程序集中
3、 程序集是实现类型的文件,编译之后生成的。 命名空间是对类型的逻辑分组。
4、 C#编译器可能比较关心命名空间,应为它需要确定类的完整名称,然后交给CLR。 CLR只关心程序集,会通过类的完整名称加载对应的程序集。 三、总结通过在项目中使用分部类,发现可以通过分部类实现对这个类的扩充和完善。而使用分部类时我们会对命名空间进行修改,近而将类进行扩展;这就是我们说的一个命名空间可以存在于不同的程序集。

C#的类型架构

在这里插入图片描述

1.值类型的基本内容:

  • 值类型的基础是system.valueType 类型
  • 值类型的具体内容:
    在这里插入图片描述

2.补充:字节、字、bai位、比特之间的关系

1位=1比特du;1字=2字节;1字节=8位;1字=16位。

1、位

位是计算机存储的最小单位,简记为b,也称为比特(bit)计算机中用二进制中的0和1来表示数据,一个0或1就代表一位。位数通常指计算机中一次能处理的数据大小;

2、比特

比特(bit)是由英文BIT音译而来,比特同时也是二进制数字中的位,是信息量的度量单位,为信息量的最小单位;

3、字节

字节,英文Byte,是计算机用于计量存储容量的一种计量单位,通常情况下一字节等于八位,字节同时也在一些计算机编程语言中表示数据类型和语言字符,在现代计算机中,一个字节等于八位;

4、字

字是表示计算机自然数据单位的术语,在某个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组,在现代计算机中,一个字等于两个字节。

这里:位=比特<字节<字

扩展资料:
计算机中的存储单位有:bit、B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB等。

这些单位中最小的单位是——位 bit (比特)(Binary Digits),一个位存放一位二进制数,即 0 或 1,它是计算机存储中最小的存储单位。

其他的单位相互之间的换算关系入下:

  • List item
  • 1 Byte(B)= 8 bit;
  • 1 Kilo Byte(KB) = 1024B;
  • 1 Mega Byte(MB) = 1024 KB;
  • 1 Giga Byte (GB)= 1024 MB;
  • 1 Tera Byte(TB)= 1024 GB;
  • 1 Peta Byte(PB) = 1024 TB;
  • 1 Exa Byte(EB) = 1024 PB;
  • 1 Zetta Byte(ZB) = 1024 EB;
  • 1Yotta Byte(YB)= 1024 ZB;
  • 1 Bronto Byte(BB) = 1024 YB;
  • 1 Nona Byte(NB)=1024 BB;
  • 1 Dogga Byte(DB)=1024 NB;
  • 1 Corydon Byte(CB)=1024DB;
  • 1 Xero Byte (XB)=1024CB;

(1)、英文和数字占一个字节
(2)、中文占一个字符,也就是两个字节

3.装箱和拆箱的概念

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值