2020年C基础知识总结范文.doc_第1页
2020年C基础知识总结范文.doc_第2页
2020年C基础知识总结范文.doc_第3页
2020年C基础知识总结范文.doc_第4页
2020年C基础知识总结范文.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c基础知识总结范文 什么是c#语言?c#语言的基础知识又有哪些?下面是为大家的关于c#基础知识总结,希望大家喜欢! 1.什么是C#? C#是一种通用的类型安全且面向对象的编程语言。 类型安全:类型只能通过它们定义的协议进行交互,从而保证一种类型的内部一致性。C#支持静态类型化,在编译时会执行静态类型安全性检查。 面向对象的特性:封装,继承,多态。 2.NetFramework .NetFramework是由CLR和大量的程序库组成。CLR是执行托管代码的运行时环境。 3.值类型和引用类型 值类型包含大多数内建类型以及自定义struct类型和enum类型。给值类型复制总是复制实例。 示例代码: /定义结构Product publicstructProductpublicintprice,doublediscount; staticvoidMain() ProductproductOne=newProduct(); productOne.price=12; ProductproductTwo=productOne; Console.WriteLine(productOne.price);/12 Console.WriteLine(productTwo.price);/12 productOne.price=10; Console.WriteLine(productOne.price);/10 Console.WriteLine(productTwo.price);/12 存储示意图: productOne和productTwo分别存储在不同的内存空间。 引用类型包括类、数据、委托和接口。引用类型包含对象和对象的引用,给引用类型赋值只是复制了引用,而不是对象实例。 示例代码: PublicclassProductpublicintprice,intdiscount; staticvoidMain() ProductproductOne=newProductOne(); productOne.price=12; ProductproductTwo=productOne; Console.WriteLine(productOne.price);/12 Console.WriteLine(productTwo.price);/12 ProductOne.price=10; Console.WriteLine(productOne.price);/10 Console.WriteLine(productTwo.price);/10 存储示意图: 4.C#语句 选择语句(if,switch) if-else示例: if(1+1=2) Console.WriteLine(true); else Console.WriteLine(false); switch示例: switch(number) case1: Console.WriteLine(One); break; case2: Console.WriteLine(Two); break; default: Console.WriteLine(number); break; 循环语句(for,foreach,while,do-while) for循环示例代码: for(inti=1;i=10;i+) Console.Write(i); foreach循环示例代码: foreach(charcincode) Console.WriteLine(c); while和do-while的区别: while循环在执行之前会进行检查,do-while循环在检查之前至少执行了一次。 示例代码: inti=0; while(i=10) Console.WriteLine(i); i+; intj=0; do Console.WriteLine(j); j+; while(j=10) const与readonly readonly为运行时常量,const为编译时常量。 编译时常量比运行时常量快,性能好,但是缺乏灵活性(编译时常量需要重新编译应用程序)。 编译时常量(const)仅限于数值和字符串(基元类型),C#不允许使用new来初始化一个编译时常量 const修饰的常量默认是静态的(类型)。 readonly修饰的字段可以在构造函数中被修改。 使用const较之使用readonly的唯一好处就是性能。 partial关键字 此关键字允许将类、结构或接口的定义拆分到多个文件中。 如果类的定义,其内容很多,那么分别放在不同的文件中就是一个不错的选择。 在File1.cs中 namespaceAiqier partialclassA intnum=0; voidMethodA() partialvoidMethodC(); 在File2.cs中 namespaceAiqier partialclassA voidMethodB() partialvoidMethodC() sealed关键字 当对一个类应用sealed修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。 new和override Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名。 New关键字主要用来区别派生类和基类同名方法的选择问题,通过隐藏基类方法,达到使编译器调用正确的方法的目的。 也就是说New关键字在作为修饰符用于向基类成员隐藏继承成员时,对于派生类该关键字指示方法是重写的新方法,但是关闭了多态性。具体调用的方法为声明时变量的方法。 C#中using语句怎么用? 说道using的话,首先要说的就是.Net中的两种资源,也就是托管资源和非托管资源。 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象。 非托管资源:不受CLR管理的对象,如Windows内核对象,文件,数据库连接,套接字,对象。 这里要注意,假如说你的类型需要显式释放资源,那么一定要继承IDispose接口。 而这个IDispose接口就是为using语法糖提供便利,那种在finall处调用Dispose函数的try-catch-finally语句块,其实和using语句生成的IL代码基本上完全一致。 c#类型转换 值类型 值类型的类型转换,可以理解为用一个类型A的值去初始化一个类型B的变量。 变宽转换 如果是变宽转换,那么不会有问题。比如32位的int到64位的int,或者是int到float。 变窄转换 如果是变窄转换,那么就可能有问题。(可能会发生溢出) 首先,变窄转换是需要强制类型转换的,不能像隐式转换那样,需要在括号中写入要转换的类型。 doublefoo=3.5; floatbar=(float)foo; 溢出 比如short可以存储032767的数字,而byte可以存储的最大值是255,那么你将一个为7的short转换为byte类型,那么不会有什么问题。但是如果你将一个大于255的short强制类型转换为byte,那就会有问题。 bytedestinationVar; shortsourceVar=281; destinationVar=(byte)sourceVar; /sourceVarval:281 /destinationVar:25 原因是这样的(源数据的最左边一位丢失了): 281=100011001 25=000011001 255=011111111 这个数值的例子摘自c#经典入门 可以使用checked和unchecked关键字检验溢出。 checked() unchecked() 默认就是unchecked的,不写这个关键字也行。如果是checked,而且发生了溢出,就会抛出异常。 引用类型 引用类型的转换与值类型“看上去有点相反”。 首先要明确的是引用类型转换的是栈中的变量,而该变量指向的位于堆中的对象不受影响。 向上转换 将父类的引用指向子类对象是没什么问题的(多态的本质) 向下转换 与值类型的转换类似,引用类型的向下转换也会用到强制类型转换。 而这种转换并不总是有效(即便是基类到派生类的转换),转换是否成功,只有在运行的时候才会知道。 Childchild=(Child)father; 最常见的用法是传递object对象,然后在将这个得到的对象转化为要处理的类型,(非泛型集合,发送消息机制) as运算符 强制类型转换出现错误会抛出异常,使用as或is会更加优雅。 as运算符用于在两个引用类型之间转换,转换失败后会返回一个null,并不会抛出异常。 ClassAa=newClassA(); ClassBb=aasClassB; if(b!=null) . 无论是as还是is运算符,都比直接使用强制类型转换要安全,而且不需要使用异常检查,只需要判断结果是否为空就可以了。 类型无关的类型转换 之前提到的引用类型转换,是指相关类型之间的转换,比如继承关系,共享接口。 不相关的两个类型,也可以发生类型转换,这就要使用到重载运算符,你需要自己定义内部转换的原理。 需要使用到的重载运算符有:implicit(隐式类型转换)explicit(显示类型转换) /定义ConvClassA到ConvClassB的隐式转换 publicclassConvClassA publicstaticimplicitoperatorConvClassB(C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论