2022年C基础知识点剖析.docx
《2022年C基础知识点剖析.docx》由会员分享,可在线阅读,更多相关《2022年C基础知识点剖析.docx(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - C# 基础学问点1、数据类型 1.1 、值类型、引用类型 1.2 、预定义类型 1.3 、类型转换 1.4 、装箱和拆箱 2、变量、常量 2.1 、变量 2.2 、常量 3、运算符和表达式 3.1 、运算符、表达式 3.2 、特别运算符 3.3 、优先级别 4、流程掌握 4.1 、条件语句 4.2 、循环语句 4.3 、跳转语句 4.4 、反常处理 5、程序结构 5.1 、类 5.2 、命名空间1 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 42
2、页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -5.3 、Main 方法6、程序例子7、作业一 数据类型1.1 值类型、引用类型C# 的数据类型可以分成两大部分:值类型和引用类型;值类型的变量总是直接包含着自身的数据,指向实际数据的地址;而引用类型的变量是C# 值类型包括:整型、布尔型、实型、十进制型、结构和枚举、接口和数组;从概念上看, 其区分是值类型直接储备其值,而引用类型储备对值的引用;这两种类型储备在内存的不同地方:值类型储备在堆栈中,而引用类型储备在托管堆上;留意区分某个类型是值类型仍是引用类型,由于这种储
3、备位置的不同会有不同的影响;例如,int是值类型,这表示下面的语句会在内存的两个地方储备值20: / i 和 j 都是整型变量i = 20; j = i; 但考虑下面的代码; 这段代码假定已经定义了一个类 class1 ,class1是一个引用类型,它有一个 int 类型的成员变量 Value:2 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - class1 x, y x = new class1 ; x.
4、Value = 30; y = x; Console.WriteLiney.Value;/ 输出 30 y.Value = 50; Console.WriteLinex.Value;/ 输出 50 要懂得的重要一点是在执行这段代码后,只有一个 class1 对象; x和 y 都指向包含该对象的内存位置;由于x 和 y 是引用类型的变量,声明这两个变量只是保留了一个引用而不会实例化给定类型的对象;由于 x 和 y 引用同一个对象,所以对 亦然;因此上面的代码会显式 30 和 50;假如变量是一个引用,就可以把其值设置为何对象: y = null; x 的修改会影响 y,反之null ,确定它不引
5、用任在 C#中,基本数据类型如 bool 和 long 都是值类型;假如声明一个bool 变量,并给它给予另一个bool 变量的值,在内存中就会有两个bool 值;假如以后修改第一个bool 变量的值,其次个bool 变量的值也不会转变;这些类型是通过值来复制的;相反,大多数更复杂的 C#数据类型,包括我们自己声明的类都是引用类型; 它们安排在堆中,其生存期可以跨多个函数调用, 可以通过一个或几个别名来拜访; CLR(Common Language Runtime公共语言运行库指 .NET的运行时支持,3 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -
6、第 3 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -包括一个面对对象类型系统和一些运行时服务)执行一种精细的算法来跟踪哪些引用变量仍是可以拜访的,哪些引用变量已经不能拜访 了;CLR会定期进行清理,删除不能拜访的对象,把它们占用的内存 返回给操作系统;这是通过垃圾收集器实现的;1.2 预定义类型C#认可的基本预定义类型并没有内置于语言中,而是内置于 .NET Framework中;例如,在 C#中声明一个 int类型的数据时,声明的实际上是 .NET结构 System.Int32 的一个实例; C#
7、支持两个预定义的引 用类型,如下表:CTS:公共类型系统名CTS 类说明称ObjecSystem.根类型,其他类型都是从它派生而来的 包括值类型 t Object StrinSystem.Unicode 字符串g String 1. object类型在 C#中,object 类型就是最终的父类型,全部内在和用户定义的类 型都从它派生而来; 这是 C#的一个重要特性, object 类型就可以用4 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - -
8、 - - - - - - - - -于两个目的: 可以使用 object引用绑定任何特定子类型的对象; object类型执行很多基本的一般用途的方法,包括Equals 、GetHashCode、GetType 和 ToString;用户定义的类可能需要使用一种面对对象技术重写,供应其中一些方法的替代执行方法;例如,重写 ToString 时,要给类供应一个方法,该方法可以供应类本身的字符串表示;假如类中没有提供这些方法的实现, 编译器就会在对象中挑选这些实现,它们在类中的执行不肯定正确;2. string 类型C#有 string关键字,在翻译为 .NET类时,它就是 System.strin
9、g;有了它,像字符串连接和字符串复制这样的操作就很简洁了: string str1 = Hello ; string str2 = World; string str3 = str1 + str2; / 字符串连接对是一个引用类型; String尽管这是一个值类型的赋值,但string象保留在堆上,而不是堆栈上;因此,当把一个字符串变量赋给另一个字符串时,会得到对内存中同一个字符串的两个引用;但是,string与引用类型在常见的操作上有一些区分;例如,修改其中一个字符串,留意这会创建一个全新的string对象,而另一个字符串没有转变;考虑下面的代码:5 细心整理归纳 精选学习资料 - - -
10、- - - - - - - - - - - - 第 5 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - using System; class StringExample public static int Main string s1 = a string; string s2 = s1; Console.WriteLines1 is + s1; Console.WriteLines2 is + s2; s1 = another string; Console.WriteLines1 is now
11、+ s1; Console.WriteLines2 is now + s2; return 0; 其输出结果为:s1 is a string s2 is a string s1 is now another string s2 is now a string 换言之,转变 s1 的值对 s2 没有影响,这与我们期望的引用类型 正好相反;6 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -1.3 类型转换1.
12、隐式转换 隐式转换就是系统默认的、不需要加以声明就可以进行的转 换; 隐式转换一般不会失败,转换过程中也不会导致信息丢 失;隐式转换包括下面几种:2. 显式转换 显式类型转换,就是强制类型转换;与隐式转换正好相反,显 式转换需要用户明确指定转换的类型,不如看下面例子: long l = 5000; int I = intl; 显式转换可以发生在表达式的运算过程中;它并不是总能成 功,而且经常可能引起信息丢失;显式转换包括全部的隐式转 换;显式转换包括下面几种:7 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 42 页 - - - - -
13、 - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -1.4 装箱和拆箱装箱和拆箱使我们可以把一个值类型当作一个引用类型看待;装箱转换是指将一个值类型隐式的转换成一个Object 类型,拆箱转换是指将一个 Object 类型显式地转换成一个值类型, 他们互为逆过程;装箱( boxing )装箱转换是指将一个值类型隐式转换成一个 object 类型,或者把这个值类型转换成一个被该值类型应用的接口类型;把一个值类型的 值装箱,也就是创建一个 object 实例并将这个值给这个 objet. 不如: Int i = 10; Object obj =
14、i; 拆箱( unboxing )拆箱转换是指将一个对象类型显式转换成一个值类型,或是将一 个接口类型显示地转换成一个执行该接口的值类型;拆箱的过程分为两步:第一,检查这个对象的实例,看它是否为 给定的值类型的装箱值; 然后,把这个实例的值拷贝给值类型的变量;8 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -如: Int i = 10; Object obj = i; Int j = intobj; 二 变
15、量、常量2.1 、变量在 C#中声明变量使用下述语法:datatype identifier; 例如: int i; 一旦它被声明之后, 就可以使用赋值运算符 = 给它安排一个值: i = 10; 仍可以在一行代码中声明变量, 并初始化它的值: int i = 10; 假如在一个语句中声明和初始化了多个变量,相同的数据类型: int x = 10, y =20; 那么全部的变量都具有要声明类型不同的变量, 需要使用单独的语句; 在多个变量的声明中,不能指定不同的数据类型: int x = 10; bool y = true; int x = 10, bool y = true; / 1. 变量
16、的初始化这样编译报错细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -变量的初始化是 C#强调安全性的另一个例子;简洁地说,C#编译器 需要用某个初始值对变量进行初始化,之后才能在操作中引用该变 量;大多数现代编译器把没有初始化标记为警告,但 C#编译器把它 当作错误来看待; 这就可以防止我们无意中从其他程序遗留下来的内 存中猎取垃圾值;C#有两个方法可确保变量在使用前进行了初始化: 变量是类或结构中的字段,假
17、如没有显式进行初始化,在默认 状态下当创建这些变量时,其值就是 0; 方法的局部变量必需在代码中显式初始化,之后才能在语句中 使用它们的值;此时,初始化不是在声明该变量时进行的,但编译器会通过方法检查全部可能的路径,假如检测到局部变量在初始化之前就使用了它的值,就会产生错误;同样的规章也适用于引用类型;考虑下面的语句: Something objSomething; 在 C#中,这行代码仅会为Something 对象创建一个引用,但这个引用仍没有指向任何对象;对该变量调用方法或属性会导致错误;在 C#中实例化一个引用对象需要使用new关键字;如上所述,创建一个引用,使用 new关键字把该引用指
18、向储备在堆上的一个对象: objSomething = new Something; / This creates a Something on the heap 2. 变量的作用域变量的作用域是可以拜访该变量的代码区域;一般情形下, 确定作用10 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 42 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -域有以下规章: 只要字段所属的类在某个作用域内,其字段 也称为成员变量 也在该作用域内局部变量存在于表示声明该变
19、量的块语句或 方法终止的封闭花括号之前的作用域内; 在 for 、while 或类似语句中声明的局部变量存在于该循环体 内;局部变量的作用域冲突 大型程序在不同部分为不同的变量使用相同的变量名是很常见的;只要变量的作用域是程序的不同部分,就不会有问题, 也不会产生模糊性;但要留意, 同名的局部变量不能在同一作用域内声明两次,所以 不能使用下面的代码: int x = 20; / 其它代码 int x = 30; 字段和局部变量的作用域冲突在某些环境下,可以区分名称相同 尽管不是经过完全限定的名称 、作用域相同的两个标识符; 此时编译器答应声明其次个变量;缘由是 C#使得变量之间有一个基本的区分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 基础 知识点 剖析
限制150内