C#复习要点与解析.doc_第1页
C#复习要点与解析.doc_第2页
C#复习要点与解析.doc_第3页
C#复习要点与解析.doc_第4页
C#复习要点与解析.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

一概述1、 Microsoft.NET Framework包括了两个组件:CRL(公共语言运行库,简称运行库)和类库。2、 VS2008中常用的应用程序模板: 1)控制台应用程序 2)Windows应用程序 3)ASP.NET Web应用程序 4)ASP.NET Web服务应用程序 5)ASP.NET Web应用程序 6)智能设备应用程序 7)安装和部署程序3、一、什么是命名空间?命名空间和类库的关系 1)命名空间是对类的一种逻辑上的分组,即将类按照某种关系划分不同的命名空间 2)命名空间又可以包含其他的命名空间 3)所有类库都在规定的命名空间下 二、using关键字的三种用法: 1)指定引用的命名空间 2)简化命名空间的层次表达形式 3)作为语句定义一个范围 三、每个应用程序只有一个入口Main方法,C#语言是区分大小写的4、课后习题 2、什么是命名空间?命名空间和类库的关系1)命名空间是对类的一种逻辑上的分组,即将类按照某种关系划分不同的命名空间 2)命名空间又可以包含其他的命名空间 3)所有类库都在规定的命名空间下 3、举例说明using关键字有哪些主要用途。 1)指定引用的命名空间,例如:using System.Windows.Forms; 2)简化命名空间的层次表达形式,例如:using WinForm=System.Windows.Form; 3)作为语句定义一个范围。例如:Font font1=new Font(“Arial”,10.0f);using(font1)程序执行到“”时,就会自动释放font1对象。二、数据类型与流程控制1、数据类型分类:值类型和引用类型 注:数组属于引用类型,结构属于值类型。2、值类型和引用类型之间的区别特性值类型引用类型变量中保存的内容实际数据指向实际数据的引用指针内存空间配置堆栈(stack)受管制的堆内存需求较少较多执行效率较快较慢内存释放时间点执行超过定义变量的作用域时由垃圾回收机制负责回收3、值类型:整形、浮点型、小数型、布尔型、字符型、结构型、枚举型 引用类型:类、委托、接口、数组4、取消转义字符应使用字符 5、char字符的存储为单个字符,字符编码形式采用Unicode编码。6、显式转换与隐式转换的含义 隐式转换:低精度小范围高精度大范围 显式转换:转换时指定数据类型,并且从高精度大范围到低精度小范围数据进行转换时,必须使用显式转换。7、什么是装箱和拆箱? 装箱:值类型(隐式转换)Object类型 拆箱:Object类型(显式转换)值类型8、字符串格式化输出 Console.WriteLine(“0-0:Pgood”,12.34F); 运行结果:12.34-1,234.00%good Console.WriteLine(“0-0:#good”,0);运行结果:0-good Console.WriteLine(“0-0:00000good”,456);运行结果:456-00456good9、流程控制语句(条件、分支、循环、跳转)break及continue的含义 (1)if语句实例例2-2设有如下数学表达式,用if语句编程求表达式的值。(当x0时y=1)using System;namespace IfExample class Program static void Main() Console.Write(请输入x的值:); /从键盘读入一个字符串,赋给变量x string i = Console.ReadLine(); /将字符串转换为整型数据 int x = Convert.ToInt32(i); int y; /根据x值的大小,为整型变量y赋不同的值 if (x 0) y = 1; else if (x = 0) y = 0; else y = -1; Console.WriteLine(y的值为:0, y); Console.ReadLine(); (2)switch语句实例例2-3使用switch语句,完成对成绩等级的评定using System;namespace SwitchExample public class Program public static void Main() Console.Write(请输入成绩:); /从键盘接收一行字符 string str = Console.ReadLine(); /转换为整型 int i = Int32.Parse(str.Trim(); if (i 100 | i 0) Console.WriteLine(成绩不在0-100范围内); else switch (i / 10) case 10: Console.Write(满分,); goto case 9; case 9: Console.WriteLine(优秀); break; case 8: case 7: Console.WriteLine(良好); break; case 6: Console.WriteLine(及格); break; default: Console.WriteLine(不及格); break; Console.ReadLine(); (3)for语句实例例2-4使用for语句控制循环体using System;namespace ForExample class Program static void Main() /清屏,并设置背景及前景色 Console.Clear( ); Console.Title = 测试for循环; Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Red; Console.Beep( ); /循环定位输出符号“*” for (int i = 1; i 10; i += 2) Console.SetCursorPosition(40 - i / 2, i); for (int j = 0; j i; j+) Console.Write(*); Console.WriteLine( ); /按任意键结束 Console.ReadLine ( ); (4)foreach语句实例例2-5使用foreach语句提取SortedList泛型对象的每个元素。using System;namespace ForeachExample class Program public static void Main() /声明一个泛型列表 SortedList list = new SortedList(); list.Add(2, str2); list.Add(1, str1); list.Add(3, str3); /显示泛型列表中的每个元素; Console.WriteLine(indextstring); foreach (int index in list.Keys) Console.WriteLine(index + t + listindex); Console.ReadLine(); (5)while语句实例例2-6使用while语句求1到100以内所有能被3整除的自然数using System;namespace WhileExample class Program static void Main(string args) int x = 1; while (x+ = 100) if (x % 3 = 0) Console.WriteLine(x); Console.ReadLine(); (6)do-while语句实例例2-7用dowhile语句求一个正整数的阶乘。using System;namespace DoWhileExample class Program static void Main(string args) Console.Write(请输入一个正整数:); /读入字符串,并转换成整型数据,赋值给x int x = Convert.ToInt32(Console.ReadLine( ); if (x 0); Console.WriteLine(结果为0, y); Console.ReadLine( ); (7)break语句实例例2-8循环接收和输出从键盘输入的每一行的值,当直接按回车键时退出。using System;namespace BreakExample class Program static void Main(string args) while (true) Console.Write(请输入一个字符串(直接回车退出):); /读入键盘输入的字符,若为空格则跳出死循环,否则显示输入数据继续循环 string s = Console.ReadLine(); if (s.Length = 0) break; Console.WriteLine(你输入的是: 0, s); (8)循环跳转综合语句实例例2-9循环与跳转综合举例using System;namespace CycleAndJumpingExample class Program static void Main() while (true) Console.Write(请输入一个字符串(q结束):); /从键盘接收一行信息 string s = Console.ReadLine(); if (s.Length = 0) continue; /如果接收的首字符等于Q或者q,则退出循环 if (s.Substring(0, 1).ToUpper() = Q) break; int letterIndex = -1, digitIndex = -1; bool checkLetter, checkDigit; checkLetter = checkDigit = true; / s.Length是字符串长度,即字符串中字符的个数 /例如:“ab章三c”的长度为5 /注意字符串由Unicode字符组成,即每一个汉字和字母均占两字节 for (int i = 0; i -1) Console.WriteLine(包含的第一个字母是0。, sletterIndex); else Console.WriteLine(字符串中不包含字母。); if (digitIndex -1) Console.WriteLine(包含的第一个数字是0。, sdigitIndex); else Console.WriteLine(字符串中不包含数字。); Console.ReadLine(); break语句的功能是退出最近的switch、while、do-while、for或foreach语句 continue语句的功能是不再执行continue语句后面循环快内剩余语句,而是将控制直接传递给下一次循环,此语句可以用在while、do-while、for或foreach语句块内部。10、try catch finally用法 如果try后面有finally块,不论是否出现异常,也不论是否有catch块,finally块总会执行的,即使在try内使用跳转语句,或return语句,也不能避免finally块的执行,一般在finally块中作释放资源的操作,如关闭打开的文件,关闭与数据库的连接等。 try-catch finally常用形式 try 语句序列catch(异常类型,标识符) 异常处理finally 语句序列11、课后习题 2、C#语言中不同整型之间进行转换的原则是什么? 答:在整型之间进行转换时,小范围类型可以隐式转换为大范围类型,但大范围类型转换为小范围类型时需要使用显式转换。 3、简述装箱和拆箱的过程。 答:装箱是将值类型隐式转换为object类型或者转换为由该值类型实现了的接口类型。装箱一个数值会为其分配一个对象实例,并把该数值拷贝到新对象中。拆箱是显式的把object类型转换为值类型,或者把值类型实现了的接口类转换为该值类型。 4、分别写出下列语句执行的结果 Console.WriteLine(“0-0:Pgood”,12.34F); 运行结果:12.34-1,234.00%good Console.WriteLine(“0-0:#good”,0);运行结果:0-good Console.WriteLine(“0-0:00000good”,456);三、常用数据类型的用法1、字符串的常用用法:求字符串的长度、Insert、Contains、IndexOf、Join、Split using System;class Test4 public static void Main() string str = ; while (str.Length -1) Console.WriteLine(第一个出现字母a的位置是:0, i); else Console.WriteLine(字符串中不包含字母a。); /(3) string str1 = str.Insert(3, hello); /在第3个(初始序号为)字符前插入hello Console.WriteLine(插入hello后的结果为:0, str1); /(4) string str2 = str1.Replace(hello, me); Console.WriteLine(将hello替换为me后的结果为:0, str2); /(5) string arr = str2.Split(m); Console.WriteLine(以m为分隔符分离后的字符串有:); for (int j = 0; j arr.Length; j+) Console.WriteLine(arrj); 2、一维数组定义及初始化方法 Int a=new int 30;/创建一个包含30个int型元素的数组a,并在定义时指定元素个数为30 strin b; int number=int.Parse(Console.ReadLine();/从键盘接收元素个数; b=new Stringnumber;/指定数组b共有number个元素,也可以在声明语句中直接用简化的形式为各元素赋初值 string mystring=new string“frist”,”second”,”thrid”; 或string mystring=“frist”,”second”,”thrid”; 注意:不带new运算符的简化形式只能用在声明语句中 string mystring; mystring=“frist”,”second”,”thrid”;/错误 mystring=new string“frist”,”second”,”thrid”;/正确3、枚举定义中注意enum Number:bytex1=255,x2这种形式是错误的 因为在枚举定义常量中,后面常量值系统会自动加一,即x1=255,x2=256,而byte类型的取值范围只能是02554、List泛型类的用法例3-9演示泛型列表的定义与用法。using System;namespace ListExample class Program static void Main() List list = new List(); list.Add(张三); list.Add(李四); list.Insert(0, 王五); if (list.Contains(赵六) = false) list.Add(赵六); foreach (var item in list) Console.WriteLine(item); for (int i = 0; i list.Count; i+) Console.WriteLine(list0=1, i, listi); list.Remove(张三); list.Clear(); Console.ReadLine(); 5、课后习题 4、编写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能。 (1)输出字符串的长度(2)输出字符串中第一个出现字母a的位置(3)在字符串的第三个字符后面插入字符串“hello”,输出新字符串(4)将字符串“hello”替换为“me”输出新字符串(5)以字符串“m”为分隔符,将字符串分离,并输出分离后的字符串 using System;class Test4 public static void Main() string str = ; while (str.Length -1) Console.WriteLine(第一个出现字母a的位置是:0, i); else Console.WriteLine(字符串中不包含字母a。); /(3) string str1 = str.Insert(3, hello); /在第3个(初始序号为)字符前插入hello Console.WriteLine(插入hello后的结果为:0, str1); /(4) string str2 = str1.Replace(hello, me); Console.WriteLine(将hello替换为me后的结果为:0, str2); /(5) string arr = str2.Split(m); Console.WriteLine(以m为分隔符分离后的字符串有:); for (int j = 0; j arr.Length; j+) Console.WriteLine(arrj); 四、面向对象编辑基础1、类的成员有哪些? 有静态成员和实例成员如何声明一个类,如何创建一个类实例。例4-1using System;namespace ClassExample public class Child / 字段 private int age; private string name; / 不带参数的构造函数 public Child() name = none; / 带参数的构造函数 public Child(string name, int age) = name; this.age = age; / 输出方法 public void PrintChild() Console.WriteLine(0, 1 years old., name, age); public class Program public static void Main() /使用new关键字创建对象,new后是调用的构造函数 Child child1 = new Child(Zhang San, 11); Child child2 = new Child(Li Si, 10); Child child3 = new Child(); / 显示结果 Console.Write(Child #1: ); child1.PrintChild(); Console.Write(Child #2: ); child2.PrintChild(); Console.Write(Child #3: ); child3.PrintChild(); Console.ReadLine(); 访问修饰符public、protected、private的含义,静态成员的关键字是什么? public:指任何外部的类都可以不受限制的存取这个类的方法和数据成员 protected:除了本身的类可以使用之外,任何继承自此类了的类都可以存取 private:指类中的所有方法和数据成员只能在此类中使用,外部无法存取 静态成员关键字:static2、构造函数特点: 构造函数总是和其类名相同 构造函数不包括任何返回值 每个类至少有一个构造函数 构造函数可以用private修饰吗?(可以)3、结构和类的区别 (1)结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上(2)对结构中的数据进行操作,比类或对象中的数据进行操作速度要快(3)一般用结构存储多种数据类型的数据,当创建一个很多类或对象共用的小型对象时,使用结构效率更高(凡是定义为结构的,都可以用类来定义,创建轻量级对象时可以使用结构)4、方法的参数传递中,值参传递及引用类型的参数传递 例4-6方法中值类型参数的传递using System;namespace ValueTransferExample class Program public static void AddOne(int a) a+; static void Main() int a = 3; Console.WriteLine(调用AddOne之前,a=0, a); AddOne(a); Console.WriteLine(调用AddOne之后,a=0, a); Console.ReadLine(); 例4-7方法中引用类型参数的传递using System;namespace ReferenceTransferExample class Program public static void AddOne(ref int a) a+; static void Main() int x = 3; Console.WriteLine(调用AddOne之前,x=0, x); AddOne(ref x); Console.WriteLine(调用AddOne之后,x=0, x); Console.ReadLine(); 重载方法如何调用。例4-10方法重载的用法using System;namespace MethodOverloadingExample class Program public static int Add(int i, int j) return i + j; public static string Add(string s1, string s2) return s1 + s2; public static long Add(long x) return x + 5; static void Main() Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(10); /按回车键结束 Console.ReadLine(); 5、课后习题 1、编写一个控制台应用程序,完成下列功能。(1)创建一个类,用无参数的构造函数输出该类的类名。(2)增加一个重载的构造函数,带有一个string类型的参数,在此构造函数中将传递的字符串打印出来。(3)在Main方法中创建属于这个类的一个对象,不传递参数。(4)在Main方法中创建属于这个类的另一个对象,传递一个字符串“This is a string.”。(5)在Main方法中声明类型为这个类的一个具有5个对象的数组,但不要实际创建分配到数组里的对象。(6)写出运行程序应该输出的结果。【解答】using System;class Test1 public Test1() Console.WriteLine(this); public Test1(string str) Console.WriteLine(str); public static void Main() Test1 t1 = new Test1(); Test1 t2 = new Test1(This is a string.); Test1 t3 = new Test15; 输出结果:Test1This is a string.4、结构和类的区别是什么?【解答】1)结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上。2)对结构中的数据进行操作比对类或对象中的数据进行操作速度要快。3)一般用结构存储多种类型的数据,当创建一个很多类或对象共用的小型对象时,使用结构效率更高。五、面向对象的高级编程1、面向对象编程的三大原则:封装、继承、多态2、类对象的构造顺序。例5-1基类和扩充类的定义及用法 using System;namespace InheritanceExample public class Animal public int MyProperty get; set; public Animal() Console.WriteLine(基类构造函数:Hello, Animal!); public void Eat() Console.WriteLine(基类方法:Eating); public class Cat : Animal public Cat() Console.WriteLine(扩充类构造函数:Hello, Cat!); public void Walk() Console.WriteLine(基类方法:Walk); class Program static void Main(string args) Cat cat = new Cat(); cat.Eat(); Console.ReadLine(); 3、virtual、override关键字和new关键字的含义 virtual:表示某个方法或者属性可以被扩充类中同名的方法或者属性重写 new:隐藏基类中同名的方法或属性六、窗体、控件和组件1、窗体的创建、显示、隐藏和关闭 Show方法和ShowDialog方法的区别:Show方法将窗体显示出来后就立即返回,接着执行Show方法后面的语句,因此打开窗口不会阻止用户与应用程序中的其他窗口交互,此类型的窗口称为“无模式”窗口。 ShowDialog方法将窗体显示出来以后,在该窗体关闭之前应用程序中的所有其他窗口都会被禁用,并且仅在该窗体关闭后才继续执行ShowDialog方法后面的代码,此类型窗口称为“模式”窗口。 Hide方法和Close方法的区别: Hide方法是将其隐蔽,隐藏后其实例仍然存在。Close方法是直接关闭窗口。2、如何设置窗体为多文档窗体? 用IsMDIContainer属性3、表6-2的常用属性 Enabled:决定控件是否可用,取值为true时可用,取值为false时不可用。 BackColor:设置控件的背景色。 ForeColor:设

温馨提示

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

评论

0/150

提交评论