NET+Framework和C#编程.doc_第1页
NET+Framework和C#编程.doc_第2页
NET+Framework和C#编程.doc_第3页
NET+Framework和C#编程.doc_第4页
NET+Framework和C#编程.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

.NET Framework和C#基础.NET Framework定义了.NET应用程序的开发和运行环境,以及可以在.Net应用程序中使用的类库,类似于Java的虚拟机。.NET Framework包含两个主要组件:公共语言运行时(CLR),统一的类库集(FCL)。CLR公共语言运行时(CLR)为与.NET Framework配合使用的任何语言提供了诸如内存管理、安全性和错误处理等功能。.NET中的所有代码都由CLR管理,因此称为“托管代码”。使用.NET的语言编写代码时,输出的代码为微软中间语言(MSIL)的形式。第一次运行代码时,MSIL代码将被转为特定于CPU的代码,这个过程称为即时编译(JIT)。CLS和CTS通用语言规范(CLS)为一组规则,所有.NET语言都应遵循此规则才能创建与其他语言可互操作的应用程序。公共类型系统(CTS)包含标准数据类型和准则集。如果使用.NET Framework中的任何语言创建了一个类,CTS就能使其在.NET Framework支持的任何其他语言中重用。C#中常用的命名空间.NET Framework中,所有命名空间基本都是从公共命名空间System形成的。System命名空间包含了定义.NET中使用的公共数据类型,包括Boolean、DateTime和Int32等,还包括Object这一重要的数据类型。Object数据类型形成所有其他.NET对象继承的基本对象。System.Data处理数据访问和管理System.IO管理对文件和流的同步和异步访问System.Windows处理基于窗体的Windows创建System.Reflection包含用于从程序集里读取元数据的类System.Threading包含用于多线程编程的类System.Collections包含不同的接口和类,这些接口和类用来定义不同的对象C#基础知识1. 基本数据类型数据类型大小默认值示例int有符号32位整数0int rating = 20;float32位浮点数,精确到小数点后7位0.0FFloat temperature = 40.6F;double64位浮点数,精确到小数点后1520位0.0DDouble pressurePoint = 30000.56641D;byte无符号8位整数0Byte gpa = 2;short有符号16位整数0Short salary = 3400;long有符号64位整数0LLong population = 23451900;bool布尔值,true或falseFalseBool isManager = true;stringUnicode字符串String color = “Orange”;char单个Unicode字符0Char gender =M;2. 变量和常量l 变量i. 变量声明:访问修饰符 数据类型 变量名称;例:private int test = 10;ii. 变量命名标准:以骆驼命名法声明,成员变量应以一个下划线开头;例:private int _testMark = 80;l 常量声明i. 常量声明: const 数据类型 常量名=常量值;例:const int maxMarks=100;ii. 常量命名规则:私有访问修饰符的常量必须以骆驼命名法声明,并以一个下划线开头;带有公共修饰符、受保护修饰符的常量必须以帕斯卡命名法声明。3. C#数据类型分类特点值类型引用类型变量存放的内容实际值引用内存单元堆栈堆默认值0空传递给方法的参数复制值复制引用4. 访问修饰符访问修饰符说明public可被所属类的成员以及不属于类的成员访问internal可被当前程序集访问protected可被所属类或派生自所属类的类型访问private仅所属类的成员才可以访问类成员的默认访问修饰符为private。类的默认修饰符为interval.5. 装箱和拆箱l 装箱i. 将值类型自动转换为应用类型的过程称为装箱。ii. 例:int val = 100;object obj = val;这里,int变量val的值被赋给object变量obj,即将值类型转换为引用类型l 拆箱i. 将引用类型转换回值类型的过程称为拆箱ii. 例:int val = 100;object obj = val;int num = (int)obj;这里将object对象obj的值赋给num时进行了显式拆箱。6. 数组l 数组声明:数据类型数组的大小或者容量 变量名;例:int6 arrayHere;声明数组时可以不定义数组大小,而在稍后的程序中指定,指定时可以使用变量例:string array1; int count = 5; string array2; array1 = new string5; array2 = new stringcount;l 初始化数组例:string array3 = “top”,“down”,“left”,“right”;7. 结构l 结构声明:struct 结构名/数据成员/方法C#的结构可以在其内部定义方法l 结构与类的区别: 结构无法实现继承,类可以被继承 结构属于值类型,类属于引用类型8. 枚举l 枚举是一组已命名的数值常量l 枚举声明访问修饰符 enum 枚举名/枚举成员9. 基本语句l if else语法如下:if(表达式)/表达式结果为真时执行的语句else/表达式结果为假时执行的语句注意:表达式的计算结果必须为布尔类型l switch case语法如下:switch(变量)case 值1:/语句break;case 值2:/语句break;default:/语句break;注意:必须为每个case块指定一个跳转语句(break或goto语句),否则会出现编译错误;C#中变量可以为string类型。l while循环语法如下:while(条件)/语句l dowhile循环语法如下:do/语句while(条件);注意:while(条件)后的分号!l for循环语法如下:for(初始值;条件;增/减)/语句l foreach循环语法如下:foreach(类型 元素(变量名) in 集合或数组)/语句foreach通常用于遍历整个结合或数组,不能用于改变集合或数组的内容。例:/检查字符串中字母的个数string input = “abcde123kdie”;int count = 0;foreach(char ch in input)if(char.IsLetter(ch)count+;Console.WriteLine(“字母的个数为:0”,count);C#中的OOP1. 命名空间l 语法namespace 命名空间名l 命名空间相当于规定了“大的范围”,在不同的范围内允许有相同的名称。例:namespace Sonyclass Televisionclass WalkMannamespace Samsungclass Televisionclass WalkMan在上面的例子中,在两个命名空间中都使用了Television和WalkMan两个相同的方法名,但由于在两个命名空间中,使用起来没有名称冲突问题。C#中的命名空间在概念和作用上类似于Java中的“包”。2. 类l 类的声明:访问修饰符 class 类名/成员变量/成员方法l 构造函数和析构函数i. 构造函数的声明访问修饰符 类名(参数列表)/构造函数体ii. 析构函数的声明类名()/析构函数体iii. 构造函数与析构函数的区别 构造函数与类同名,析构函数名为类名前加“” 同一类中构造函数可以有多个,析构函数只能有一个 构造函数可以被重载,析构函数不可以被重载 构造函数在对象被创建时自动调用,析构函数只能由垃圾回收器自动调用3. 静态方法静态方法声明:访问修饰符 static 返回类型 (参数列表)静态方法的访问不需要建立类的实例,使用“类名.方法名”即可访问。如Console.WriteLine()就是Console类的一个静态方法。C#中的继承1. C#的继承a) 继承语法:访问修饰符 class 派生类名:基类名b) C#类始终继承自一个基类,不允许多重继承c) base关键字用于从派生类中访问基类成员,但不可以访问基类静态方法d) 调用基类的构造函数使用base关键字对基类的构造函数进行调用,调用必须发生在派生类的构造函数中例:public class Personpublic string _name;public int _age;public Person(string name,int age)_name=name;_age=age;public class Student:Personprivate int _id;public Student(string name,int age,int id):base(name,age)this._id=id;在上面的例子中,派生类Student的构造函数通过base关键字调用了基类Person的构造函数来初始化成员变量2. 抽象类和抽象方法a) 不能被实例化的类称为抽象类b) 使用abstract关键字定义抽象类:abstract class /成员方法c) 抽象类的成员方法可以不定义函数体,只给出函数原型(方法返回类型,方法名,参数列表)d) 抽象类的派生类必须实现其基类的抽象方法才能实例化对象,使用override关键字在派生类中实现抽象方法。3. 接口a) 接口类似于抽象类,但接口中不包含任何实现的方法,只包含函数原型b) 使用interface关键字定义接口:修饰符 interface /接口成员方法原型c) C#允许多重接口实现,一个类可以继承多个接口4. 方法重载与方法重写i. 方法重载a) 多个方法共用一个名称,但对不同数据执行相似的功能,称为方法重载。b) 方法重载可以是参数数量不同或参数类型不同,但不能根据返回类型重载方法。ii. 方法重写a) 在派生类中,有时需要对从基类中继承的方法做不同的实现,称为方法重写。b) override关键字C#使用override关键字对方法进行重写,基类中的同名方法必须声明为virtual或abstract类型。默认情况下,C#方法不是virtual类型,不能被重写。c) virtual关键字声明虚拟方法:访问修饰符 virtual 返回类型 方法名(参数列表)/虚拟方法体使用virtual修饰方法可以使子类使用override关键字重写该方法。iii. 方法重载与方法重写的区别区别方法重载方法重写发生环境同一类中基类与派生类中特征方法名相同,参数数量或类型不同,功能相似方法名相同,方法体不同,功能可能完全不同关键字不需要使用关键字修饰使用override关键字修饰属性、索引器、委托和事件1. 属性a) 通过属性读取和写入字段,而不直接读取和写入,可以提供对类中字段的保护。b) 读/写属性访问修饰符 数据类型 属性名get;set;c) 只读属性访问修饰符 数据类型 属性名get;d) 属性名通常由大写成员变量首字母而来2. 索引器a) 索引器与属性很相似,是用于编写可使用方括号运算符调用的get和set方法。一般针对类的数组使用索引器。索引器的目的是为了能够通过对象直接访问成员数组,使得能够像访问数组一样访问集合或类的数组。b) 索引器的定义访问修饰符 数据类型this数据类型 标识符get;set;例:class Subjectstring subjectName = “Java”,”C#”,”WinForm”,”Sql Server”public string this int indexgetreturn subjectNameindex;setsubjectNameindex=value;上例中,定义了一个索引器,用于检索subjectName,可以直接使用Subject的对象访问subjectName:Subject sub= new Subject();使用sub0即可得到subjectName0的值c) 一个类可以有多个索引器,类似于方法重载,通过指定不同的索引类型来实现。3. 委托a) 委托是将名称与方法的定义连接起来,类似于一个指向方法的指针,在不同的情况下可以将其指向不同的方法,但方法和委托必须具有相同的数量和类型的参数。b) 定义委托:访问修饰符 delegate 返回类型 委托名(参数列表);例:public delegate int Call(int num1,int num2);c) 实例化委托:使用new关键字实例化委托例:Call objCall = new Call(方法名);d) 调用委托:调用委托与调用方法类似:objCall(num1,num2);4. 事件a) 定义事件访问修饰符 event 委托名 事件名;事件的定义需要首先定义委托,然后根据该委托定义事件。例:public delegate void delegateMe();private event delegateMe eventMe;b) 订阅事件即添加一个委托,事件发生时该委托将调用一个方法。例:eventMe += new delegateMe(方法名);c) 引发事件if(条件)事件名();当满足条件时,引发该事件,此时将调用订阅此事件的对象的所有委托。例:if(eventMe != null)eventMe();调试、测试和异常处理1. 调试a) “局部变量”窗口显示局部变量的值,只列出当前作用域内的变量并跟踪其值。b) “监视”窗口用于计算变量和表达式的值,并跟踪,也可以编辑变量的值。c) “快速监视”窗口用于快速计算变量和表达式的值,还可修改变量的值。d) “即时”窗口检查变量的值、给变量赋值以及运行一行代码2. 测试a) 单元测试测试隔离的单元或模块b) 集成测试测试整个集成应用程序3. 异常处理a) Exception类是所有异常的基类。Exception类说明SystemException系统异常ArgumentException向方法提供的参数无效ArithmeticException算数运算异常DataExceptionADO.NET组件异常FormatException参数格式异常IOExceptionI/O异常IndexOutOfRangeException数组索引溢出异常ArgumentNullException空引用异常DivideByZeroException除零异常OverflowException数字长度溢出异常ApplicationException应用程序定义异常TargetException调用无效目标异常b) trycatchfinally块trycatch(Exception e)finally程序逻辑在try块中编写,异常处理在catch块中编写,不论是否引发异常都必须执行的代码在finally块中编写。一个try块可以可以有多个catch块,但只能有一个finally块c) 显式throw语句引发异常自定义异常:class MyException:Exceptionpublic MyException(string message):base(message)throw语句可以引发自定义异常:throw new MyException();多线程1. System

温馨提示

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

评论

0/150

提交评论