欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C#入门经典第三版 .pdf

    • 资源ID:34237130       资源大小:345.39KB        全文页数:38页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C#入门经典第三版 .pdf

    . 第一章 C#语言基础本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C# 语言,并以此为基础,能够进一步学习用C# 语言编写window 应用程序和Web应用程序。当然仅靠一章的内容就完全掌握 C#语言是不可能的, 如需进一步学习C# 语言,还需要认真阅读有关C# 语言的专著。 ( 下载源码就到源码网: )1.1 C# 语言特点Microsoft.NET(以下简称 .NET) 框架是微软提出的新一代Web软件开发模型,C# 语言是 .NET框架中新一代的开发工具。C#语言是一种现代、面向对象的语言,它简化了C+语言在类、命名空间、方法重载和异常处理等方面的操作,它摒弃了C+的复杂性,更易使用,更少出错。它使用组件编程,和VB一样容易使用。C#语法和 C+ 和 JAVA语法非常相似,如果读者用过 C+ 和 JAVA ,学习 C# 语言应是比较轻松的。用 C#语言编写的源程序,必须用C#语言编译器将C#源程序编译为中间语言(MicroSoft Intermediate Language,MSIL) 代码,形成扩展名为exe 或 dll文件。中间语言代码不是CPU可执行的机器码, 在程序运行时, 必须由通用语言运行环境(Common Language Runtime ,CLR)中的既时编译器(JUST IN Time ,JIT) 将中间语言代码翻译为CPU可执行的机器码,由CPU执行。CLR为 C# 语言中间语言代码运行提供了一种运行时环境,C#语言的 CLR和 JAVA语言的虚拟机类似。这种执行方法使运行速度变慢,但带来其它一些好处,主要有:? 通用语言规范(Common Language Specification,CLS):.NET 系统包括如下语言:C# 、C+、VB 、J#,他们都遵守通用语言规范。任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,由CLR负责执行。只要为其它操作系统编制相应的CLR ,中间语言代码也可在其它系统中运行。? 自动内存管理:CLR 内建垃圾收集器,当变量实例的生命周期结束时,垃圾收集器负责收回不被使用的实例占用的内存空间。不必象C 和 C+语言,用语句在堆中建立的实例,必须用语句释放实例占用的内存空间。也就是说,CLR具有自动内存管理功能。? 交叉语言处理:由于任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码, 不同语言设计的组件,可以互相通用, 可以从其它语言定义的类派生出本语言的新类。由于中间语言代码由CLR负责执行,因此异常处理方法是一致的,这在调试一种语言调用另一种语言的子程序时,显得特别方便。? 增加安全: C#语言不支持指针,一切对内存的访问都必须通过对象的引用变量来实现,只允许访问内存中允许访问的部分,这就防止病毒程序使用非法指针访问私有成员。也避免指针的误操作产生的错误。CLR 执行中间语言代码前,要对中间语言代码的安全性,完整性进行验证,防止病毒对中间语言代码的修改。? 版本支持:系统中的组件或动态联接库可能要升级,由于这些组件或动态联接库都要在注册表中注册, 由此可能带来一系列问题,例如, 安装新程序时自动安装新组件替换旧组件,有可能使某些必须使用旧组件才可以运行的程序,使用新组件运行不了。在.NET 中这些组件或动态联接库不必在注册表中注册,每个程序都可以使用自带的组件或动态联接库,只要把这些组件或动态联接库放到运行程序所在文件夹的子文件夹bin 中,运行程序就自动使用在bin 文件夹中的组件或动态联接库。由于不需要在注册表中注册,软件的安装也变得容易了,一般将运行程序及库文件拷贝到指定文件夹中就可以了。? 完全面向对象:不象C+语言,即支持面向过程程序设计,又支持面向对象程序设计,C#语言是完全面向对象的,在C#中不再存在全局函数、全区变量,所有的函数、变量和常量都必须定义在类中,避免了命名冲突。C#语言不支持多重继承。1.2 编写控制台应用程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 38 页 - - - - - - - - - 1.2.1 使用 SDK命令行工具编写控制台程序第一个程序总是非常简单的,程序首先让用户通过键盘输入自己的名字,然后程序在屏幕上打印一条欢迎信息。程序的代码是这样的: using System;/导入命名空间。/ 为 C#语言新增解释方法,解释到本行结束class Welcome/类定义,类的概念见下一节 /*解释开始,和C语言解释用法相同解释结束 */ static void Main()/主程序,程序入口函数,必须在一个类中定义 Console.WriteLine(请键入你的姓名:);/控制台输出字符串Console.ReadLine();/从键盘读入数据,输入回车结束Console.WriteLine(欢迎! ); 可以用任意一种文本编辑软件完成上述代码的编写,然后把文件存盘,假设文件名叫做welcome.cs ,C# 源文件是以cs 作为文件的扩展名。和C语言相同, C#语言是区分大小写的。高级语言总是依赖于许多在程序外部预定义的变量和函数。在C 或 C+中这些定义一般放到头文件中,用#include语句来导入这个头文件。 而在 C# 语言中使用using 语句导入名字空间,using System 语句意义是导入System 名字空间, C#中的 using 语句的用途与C+ 中#include语句的用途基本类似,用于导入预定义的变量和函数,这样在自己的程序中就可以自由地使用这些变量和函数。如果没有导入名字空间的话我们该怎么办呢?程序还能保持正确吗?答案是肯定的,那样的话我们就必须把代码改写成下面的样子:class Welcome static void Main() System.Console.WriteLine(请键入你的姓名:); System.Console.ReadLine(); System.Console.WriteLine(欢迎! ); 也就是在每个Console 前加上一个前缀System. ,这个小原点表示Console 是作为 System 的成员而存在的。C#中抛弃了C 和 C+ 中繁杂且极易出错的操作符象: 和-等, C#中的复合名字一律通过 . 来连接。 System 是.Net 平台框架提供的最基本的名字空间之一,有关名字空间的详细使用方法将在以后详细介绍,这里只要学会怎样导入名字空间就足够了。程序的第二行class Welcome声明了一个类,类的名字叫做Welcome 。C# 程序中每个变量或函数都必须属于一个类,包括主函数Main() ,不能象C或 C+ 那样建立全局变量。C#语言程序总是从Main() 方法开始执行, 一个程序中不允许出现两个或两个以上的Main() 方法。请牢记 C#中 Main() 方法必须被包含在一个类中,Main 第一个字母必须大写,必须是一个静态方法,也就是Main() 方法必须使用static修饰。 static void Main()是类 Welcome中定义的主函数。静态方法意义见以后章节。程序所完成的输入输出功能是通过Console 类来完成的, Console 是在名字空间System 中已经定义好的一个类。Console 类有两个最基本的方法WriteLine和 ReadLine 。ReadLine 表示从输入设备输入数据,WriteLine则用于在输出设备上输出数据。如果在电脑上安装了Visual Studio.Net,则可以在集成开发环境中直接选择快捷键或菜单命令编译并执行源文件。如果您不具备这个条件,那么至少需要安装Microsoft.Net Framework SDK,这样才能够运行C# 语言程序。 Microsoft.Net Framework SDK中内置了C#名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 38 页 - - - - - - - - - 的编译器csc.exe ,下面让我们使用这个微软提供的命令行编译器对程序welcome.cs 进行编译。假设已经将welcome.cs 文件保存在d:Charp目录下,启动命令行提示符,在屏幕上输入一行命令:d: 回车, cd Charp 回车,键入命令:C:WINNTMicrosoft.NETFrameworkv1.0.3705csc welcome.cs 如果一切正常welcome.cs 文件将被编译, 编译后生成可执行文件Welcome.exe。可以在命令提示符窗口运行可执行文件Welcome.exe ,屏幕上出现一行字符提示您输入姓名:请键入你的姓名:输入任意字符并按下回车键,屏幕将打印出欢迎信息:欢迎!注意,和我们使用过的绝大多数编译器不同,在C#中编译器只执行编译这个过程,而在C和C+中要经过编译和链接两个阶段。换而言之C#源文件并不被编译为目标文件.obj ,而是直接生成可执行文件.exe 或动态链接库.dll,C#编译器中不需要包含链接器。1.2.1 使用 Visual Studio.Net建立控制台程序(1) 运行 Visual Studio.Net程序,出现如图1.2.2A 界面。(2) 单击新建项目按钮,出现如图1.2.2B 对话框。在项目类型(P) 编辑框中选择Visual C#项目,在模板(T) 编辑框中选择控制台应用程序,在名称(N) 编辑框中键入e1,在位置 (L) 编辑框中键入D:csarp,必须预先创建文件夹D:csarp。也可以单击浏览按钮,在打开文件对话框中选择文件夹。单击确定按钮,创建项目。出现如图1.2.2C 界面。编写一个应用程序,可能包含多个文件,才能生成可执行文件,所有这些文件的集合叫做一个项目。(3) 修改 class1.cs文件如下,有阴影部分是新增加的语句,其余是集成环境自动生成的。using System; namespace e1 / / Class1 的摘要说明。/ class Class1 / / 应用程序的主入口点。/ STAThread static void Main(string args) / / TODO: 在此处添加代码以启动应用程序/ Console.WriteLine(请键入你的姓名:); Console.ReadLine(); Console.WriteLine(欢迎! ); (4) 按 CTRL+F5键,运行程序,如右图,和1.2.1节运行效果相同。屏幕上出现一行字符,提示您输入姓名:请键入你的姓名:输入任意字符并按下回车键,屏幕将打印出欢迎信息:欢迎!输入回车退出程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 38 页 - - - - - - - - - 图 1.2.2A 图 1.2.2B 图 1.2.2C( 下载源码就到源码网: )1.3 类的基本概念C#语言是一种现代、面向对象的语言。面向对象程序设计方法提出了一个全新的概念:类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。这就是我们常说的封装性。1.3.1 类的基本概念类可以认为是对结构的扩充,它和C中的结构最大的不同是:类中不但可以包括数据,还包括处理这些数据的函数。类是对数据和处理数据的方法(函数)的封装。类是对某一类具有相同特性和行为的事物的描述。例如,定义一个描述个人情况的类Person 如下:using System; class Person/类的定义, class是保留字,表示定义一个类,Person 是类名 private string name=张三 ;/类的数据成员声明private int age=12;/private表示私有数据成员public void Display()/类的方法 ( 函数 )声明,显示姓名和年龄 Console.WriteLine(姓名 :0,年龄: 1,name,age); public void SetName(string PersonName)/修改姓名的方法( 函数 ) name=PersonName; public void SetAge(int PersonAge) age=PersonAge; Console.WriteLine(姓名 :0,年龄:1,name,age)的意义是将第二个参数变量name变为字符串填到 0 位置,将第三个参数变量age 变为字符串填到1 位置,将第一个参数表示的字符串在显示器上输出。大家注意,这里我们实际定义了一个新的数据类型,为用户自己定义的数据类型,是对个人的特性和行为的描述,他的类型名为Person,和 int ,char 等一样为一种数据类型。用定义新数据类型Person 类的方法把数据和处理数据的函数封装起来。类的声明格式如下:属性类修饰符 class 类名 类体 其中,关键字class 、类名和类体是必须的,其它项是可选项。类修饰符包括new、public 、protected、internal、private、abstract和 sealed ,这些类修饰符以后介绍。类体用于定义类的成员。1.3.2 类成员的存取控制一般希望类中一些数据不被随意修改,只能按指定方法修改,既隐蔽一些数据。同样一些函名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 38 页 - - - - - - - - - 数也不希望被其它类程序调用,只能在类内部使用。如何解决这个问题呢?可用访问权限控制字, 常用的访问权限控制字如下:private(私有 ) ,public(公有 ) 。在数据成员或函数成员前增加访问权限控制字,可以指定该数据成员或函数成员的访问权限。私有数据成员只能被类内部的函数使用和修改,私有函数成员只能被类内部的其它函数调用。类的公有函数成员可以被类的外部程序调用,类的公有数据成员可以被类的外部程序直接使用修改。公有函数实际是一个类和外部通讯的接口,外部函数通过调用公有函数,按照预先设定好的方法修改类的私有成员。对于上述例子,name和 age 是私有数据成员,只能通过公有函数 SetName() 和 SetAge() 修改,既它们只能按指定方法修改。这里再一次解释一下封装,它有两个意义, 第一是把数据和处理数据的方法同时定义在类中。第二是用访问权限控制字使数据隐蔽。1.3.3 类的对象Person 类仅是一个用户新定义的数据类型,由它可以生成Person 类的实例, C#语言叫对象。用如下方法声明类的对象:Person OnePerson=new Person();此语句的意义是建立Person类对象,返回对象地址赋值给Person 类变量 OnePerson。也可以分两步创建Person 类的对象: Person OnePerson;OnePerson=new Person() ;OnePerson 虽然存储的是Person 类对象地址, 但不是 C中的指针, 不能象指针那样可以进行加减运算,也不能转换为其它类型地址,它是引用型变量,只能引用(代表 )Person 对象,具体意义参见以后章节。和C、C+ 不同, C#只能用此种方法生成类对象。在程序中,可以用OnePerson. 方法名或OnePerson. 数据成员名访问对象的成员。例如:OnePerson.Display(),公用数据成员也可以这样访问。注意,C# 语言中不包括C+ 语言中的- 符号。1.3.4 类的构造函数和析构函数在建立类的对象时,需做一些初始化工作,例如对数据成员初始化。这些可以用构造函数来完成。每当用new生成类的对象时,自动调用类的构造函数。因此,可以把初始化的工作放到构造函数中完成。构造函数和类名相同,没有返回值。 例如可以定义Person 类的构造函数如下:public Person(string Name,int Age)/类的构造函数,函数名和类同名,无返回值。 name=Name; age=Age; 当用 Person OnePerson=new Person(“张五”,20) 语句生成Person 类对象时,将自动调用以上构造函数。请注意如何把参数传递给构造函数。变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销。类的对象被撤销时,将自动调用析构函数。一些善后工作可放在析构函数中完成。析构函数的名字为类名,无返回类型,也无参数。Person 类的析构函数为 Person() 。C#中类析构函数不能显示地被调用,它是被垃圾收集器撤销不被使用的对象时自动调用的。1.3.5 类的构造函数的重载在 C#语言中,同一个类中的函数,如果函数名相同,而参数类型或个数不同,认为是不同的函数,这叫函数重载。仅返回值不同,不能看作不同的函数。这样,可以在类定义中,定义多个构造函数,名字相同,参数类型或个数不同。根据生成类的对象方法不同,调用不同的构造函数。例如可以定义Person 类没有参数的构造函数如下:public Person()/类的构造函数,函数名和类同名,无返回值。 name=张三 ; age=12; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 38 页 - - - - - - - - - 用语句 Person OnePerson=new Person(李四 ,30) 生成对象时,将调用有参数的构造函数,而用语句Person OnePerson=new Person()生成对象时,调用无参数的构造函数。由于析构函数无参数,因此,析构函数不能重载。1.3.6 使用 Person 类的完整的例子下边用一个完整的例子说明Person 类的使用: (VisualStudio.Net编译通过 ) using System; namespace e1/ 定义以下代码所属命名空间,意义见以后章节 class Person private String name=张三 ;/类的数据成员声明private int age=12; public void Display()/类的方法 ( 函数 )声明,显示姓名和年龄 Console.WriteLine(姓名 :0,年龄: 1,name,age); public void SetName(string PersonName)/指定修改姓名的方法( 函数 ) name=PersonName; public void SetAge(int PersonAge)/指定修改年龄的方法( 函数 ) age=PersonAge; public Person(string Name,int Age)/构造函数 , 函数名和类同名, 无返回值 name=Name; age=Age; public Person()/类的构造函数重载 name=田七 ; age=12; class Class1 static void Main(string args) Person OnePerson=new Person(李四 ,30);/生成类的对象OnePerson.Display(); / 下句错误,在其它类(Class1类) 中,不能直接修改Person 类中的私有成员。/OnePerson.name=王五 ; / 只能通过Person 类中公有方法SetName修改 Person 类中的私有成员name 。OnePerson.SetName( 王五 ); OnePerson.SetAge(40); OnePerson.Display(); OnePerson=new Person(); OnePerson.Display(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 38 页 - - - - - - - - - 键入 CTRL+F5运行后,显示的效果是:姓名 : 李四 , 年龄: 30 姓名 : 王五 , 年龄: 40 姓名 : 田七 , 年龄: 12 1.4 C# 的数据类型从大的方面来分,C#语言的数据类型可以分为三种:值类型,引用类型,指针类型,指针类型仅用于非安全代码中。本节重点讨论值类型和引用类型。1.4.1 值类型和引用类型区别在 C#语言中, 值类型变量存储的是数据类型所代表的实际数据,值类型变量的值( 或实例 ) 存储在栈 (Stack) 中,赋值语句是传递变量的值。引用类型 ( 例如类就是引用类型) 的实例, 也叫对象,不存在栈中,而存储在可管理堆(Managed Heap) 中,堆实际上是计算机系统中的空闲内存。 引用类型变量的值存储在栈(Stack) 中,但存储的不是引用类型对象,而是存储引用类型对象的引用,即地址,和指针所代表的地址不同,引用所代表的地址不能被修改,也不能转换为其它类型地址,它是引用型变量,只能引用指定类对象,引用类型变量赋值语句是传递对象的地址。见下例:using System; class MyClass/类为引用类型 public int a=0; class Test static void Main() f1(); static public void f1() int v1=1;/值类型变量v1,其值 1 存储在栈 (Stack) 中int v2=v1;/将 v1 的值 ( 为 1) 传递给 v2,v2=1,v1 值不变。v2=2;/v2=2,v1值不变。MyClass r1=new MyClass();/引用变量 r1 存储 MyClass 类对象的地址MyClass r2=r1;/r1和 r2 都代表是同一个MyClass 类对象r2.a=2;/和语句 r1.a=2等价 存储在栈中的变量,当其生命周期结束,自动被撤销,例如,v1 存储在栈中, v1 和函数f1同生命周期,退出函数f1 ,v1 不存在了。但在堆中的对象不能自动被撤销。因此C和 C+语言,在堆中建立的对象,不使用时必须用语句释放对象占用的存储空间。.NET 系统 CLR内建垃圾收集器,当对象的引用变量被撤销,表示对象的生命周期结束,垃圾收集器负责收回不被使用的对象占用的存储空间。例如,上例中引用变量r1 及 r2 是 MyClass 类对象的引用,存储在栈中,退出函数f1 ,r1 和 r2 都不存在了,在堆中的MyClass 类对象也就被垃圾收集器撤销。也就是说,CLR具有自动内存管理功能。1.4.2 值类型变量分类C#语言值类型可以分为以下几种:? 简单类型 (Simple types) 简单类型中包括:数值类型和布尔类型(bool)。数值类型又细分为:整数类型、字符类型(char) 、浮点数类型和十进制类型(decimal)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 38 页 - - - - - - - - - ? 结构类型 (Struct types) ? 枚举类型 (Enumeration types) C#语言值类型变量无论如何定义,总是值类型变量,不会变为引用类型变量。1.4.3 结构类型结构类型和类一样,可以声明构造函数、数据成员、方法、属性等。结构和类的最根本的区别是结构是值类型,类是引用类型。和类不同,结构不能从另外一个结构或者类派生,本身也不能被继承, 因此不能定义抽象结构,结构成员也不能被访问权限控制字protected修饰,也不能用virtual和 abstract修饰结构方法。 在结构中不能定义析构函数。虽然结构不能从类和结构派生, 可是结构能够继承接口,结构继承接口的方法和类继承接口的方法基本一致。下面例子定义一个点结构point :using System; struct point/结构定义 public int x,y;/结构中也可以声明构造函数和方法,变量不能赋初值 class Test static void Main() point P1; P1.x=166; P1.y=111; point P2; P2=P1;/ 值传递,使P2.x=166,P2.y=111 point P3=new point();/用 new生成结构变量P3,P3 仍为值类型变量/用 new生成结构变量P3 仅表示调用默认构造函数,使x=y=0。 1.4.4 简单类型简单类型也是结构类型,因此有构造函数、数据成员、方法、属性等,因此下列语句int i=int.MaxValue;string s=i.ToString()是正确的。即使一个常量,C#也会生成结构类型的实例,因此也可以使用结构类型的方法,例如:string s=13.ToString()是正确的。简单类型包括:整数类型、字符类型、布尔类型、浮点数类型、十进制类型。见下表:保留字System 命名空间中的名字字节数取值范围sbyte System.Sbyte 1 -128127 byte System.Byte 1 0255 short System.Int16 2 -3276832767 ushort System.UInt16 2 065535 int System.Int32 4 -21474836482147483647 uint System.UInt32 4 04292967295 long System.Int64 8 -92233720368547758089223372036854775808 ulong System.UInt64 8 018446744073709551615 char System.Char 2 065535 float System.Single 4 3.4E-383.4E+38 double System.Double 8 1.7E-3081.7E+308 bool System.Boolean (true,false) decimal System.Decimal 16 正负 ?1.0? 到 7.9? 之间C#简单类型使用方法和C 、 C+ 中相应的数据类型基本一致。需要注意的是:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 38 页 - - - - - - - - - ? 和 C语言不同,无论在何种系统中,C#每种数据类型所占字节数是一定的。? 字符类型采用Unicode 字符集,一个Unicode 标准字符长度为16 位。? 整数类型不能隐式被转换为字符类型(char) , 例如 char c1=10 是错误的,必须写成: char c1=(char)10, char c=A,char c=x0032;char c=u0032。? 布尔类型有两个值:false,true。不能认为整数0 是 false ,其它值是true 。bool x=1是错误的,不存在这种写法,只能写成x=true 或 x=false 。? 十进制类型 (decimal)也是浮点数类型,只是精度比较高,一般用于财政金融计算。1.4.5 枚举类型C#枚举类型使用方法和C 、 C+ 中的枚举类型基本一致。见下例:using System; class Class1 enum Days Sat=1, Sun, Mon, Tue, Wed, Thu, Fri; / 使用 Visual Studio.Net,enum语句添加在 STAThread 前边static void Main(string args) Days day=Days.Tue; int x=(int)Days.Tue;/x=2 Console.WriteLine(day=0,x=1,day,x);/显示结果为 :day=Tue,x=4 在此枚举类型Days 中,每个元素的默认类型为int ,其中 Sun=0,Mon=1 ,Tue=2,依此类推。也可以直接给枚举元素赋值。例如:enum DaysSat=1,Sun,Mon,Tue,Wed,Thu,Fri,Sat; 在此枚举中, Sun=1,Mon=2 ,Tue=3,Wed=4 ,等等。和C、C+中不同, C#枚举元素类型可以是 byte 、sbyte 、short 、ushort 、int 、uint 、long 和 ulong 类型,但不能是char 类型。见下例:enum Days:byteSun,Mon,Tue,Wed,Thu,Fri,Sat;/元素为字节类型1.4.6 值类型的初值和默认构造函数所有变量都要求必须有初值,如没有赋值, 采用默认值。 对于简单类型, sbyte 、byte 、short 、ushort 、int 、uint 、long 和 ulong 默认值为 0,char 类型默认值是 (char)0 ,float为 0.0f ,double 为 0.0d , decimal 为 0.0m,bool 为 false ,枚举类型为0,在结构类型和类中,数据成员的数值类型变量设置为默认值,引用类型变量设置为null 。可以显示的赋值,例如int i=0。而对于复杂结构类型,其中的每个数据成员都按此种方法赋值,显得过于麻烦。由于数值类型都是结构类型,可用new语句调用其构造函数初始化数值类型变量, 例如:int j=new int()。请注意, 用 new语句并不是把int变量变为引用变量,j 仍是值类型变量,这里new 仅仅是调用其构造函数。所有的数值类型都有默认的无参数的构造函数,其功能就是为该数值类型赋初值为默认值。对于自定义结构类型,由于已有默认的无参数的构造函数,不能再定义无参数的构造函数,但可以定义有参数的构造函数。1.4.7 引用类型分类C#语言中引用类型可以分为以下几种:? 类: C#语言中预定义了一些类:对象类(object类) 、数组类、字符串类等。当然,程序员可以定义其它类。? 接口。? 代表。C#语言引用类型变量无论如何定义,总是引用类型变量,不会变为值类型变量。C# 语言引用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 38 页 - - - - - - - - - 类型对象一般用运算符new建立,用引用类型变量引用该对象。本节仅介绍对象类型(object类型 ) 、字符串类型、数组。其它类型在其它节中介绍。1.4.8 对象类 (object类 ) C#中的所有类型 ( 包括数值类型)都直接或间接地以object类为基类。对象类(object类) 是所有其它类的基类。任何一个类定义,如果不指定基类,默认 object为基类。 继承和基类的概念见以后章节。C#语言规定, 基类的引用变量可以引用派生类的对象( 注意,派生类的引用变量不可以引用基类的对象) ,因此,对一个object的变量可以赋予任何类型的值:int x =25; object obj1; obj1=x; object obj2= A; object关键字是在命名空间System 中定义的,是类System.Object的别名。1.4.9 数组类在进行批量处理数据的时候,要用到数组。数组是一组类型相同的有序数据。数组按照数组名、数据元素的类型和维数来进行描述。C#语言中数组是类System.Array类对象, 比如声明一个整型数数组:int arr=new int5;实际上生成了一个数组类对象,arr 是这个对象的引用 ( 地址 ) 。在 C#中数组可以是一维的也可以是多维的,同样也支持数组的数组,即数组的元素还是数组。一维数组最为普遍,用的也最多。我们先看一个一维数组的例子:using System; class Test static void Main() int arr=new int3;/用 new运算符建立一个3 个元素的一维数组for(int i=0;iarr.Length;i+)/arr.Length是数组类变量,表示数组元素个数arri=i*i;/数组元素赋初值,arri表示第 i 个元素的值for (int i=0;iarr.Length;i+)/数组第一个元素的下标为0 Console.WriteLine(arr0=1,i,arri); 这个程序创建了一个int类型 3 个元素的一维数组,初始化后逐项输出。其中arr.Length表示数组元素的个数。注意数组定义不能写为C语言格式: int arr。程序的输出为:arr0 = 0 arr1 = 1 arr2 = 4 上面的例子中使用的是一维数组,下面介绍多维数组:string a1;/一维 string数组类引用变量a1 string, a2;/二维 string数组类引用变量a2 a2=new string2,3; a21,2=abc; string, a3;/三维 string数组类引用变量a3 string j2;/数组的数组,即数组的元素还是数组string j3; 在数组声明的时候,可以对数组元素进行赋值。看下面的例子:int a1=new int1,2,3;/一维数组,有3 个元素。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 38 页 - - - - - - - - - int a2=new int31,2,3;/此格式也正确int a3=1,2,3;/相当于 int a3=new int1,2,3; int, a4=new int,1,2,3,4,5,6;/二维数组, a41,1=5 int j2=new int3;/定义数组j2, 有三个元素,每个元素都是一个数组j20=new int1,2,3;/定义第一个元素,是一个数组j21=new int1, 2, 3, 4, 5, 6;/每个元素的数组可以不等长j22=new int1, 2, 3, 4, 5, 6, 7, 8, 9; 1.4.10 字符串类 (string类) C#还定义了一个基本的类string,专门用于对字符串的操作。这个类也是在名字空间System中定义的, 是类 System.String的别名。 字符串应用非常广泛,在 string类的定义中封装了许多方法,下面的一些语句展示了string类的一些典型用法:? 字符串定义string s;/定义一个字符串引用类型变量s s=Zhang;/字符串引用类型变量s 指向字符串 Zhang string FirstName=Ming; string LastName=Zhang; string Name=FirstName+ +LastName;/运算符 +已被重载string SameName=Name; char s2=计,算,机,科,学 ; string s3=new String(s2); ? 字符串搜索string s=ABC科学 ; int i=s.IndexOf(科); 搜索 科 在字符串中的位置,因第一个字符索引为0,所以 A 索引为 0, 科索引为3,因此这里 i=3 ,如没有此字符串i=-1 。注意 C# 中, ASCII 和汉字都用2 字节表示。? 字符串

    注意事项

    本文(C#入门经典第三版 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开