C#静态类和静态类成员详解.doc_第1页
C#静态类和静态类成员详解.doc_第2页
C#静态类和静态类成员详解.doc_第3页
C#静态类和静态类成员详解.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

C#静态类和静态类成员详解C#静态类和静态类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。 让我们来看看静态类: 类可以声明为static的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。 使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。 静态类的主要功能如下: 1、它们仅包含静态成员。 2、它们不能被实例化。 3、它们是密封的。 4、它们不能包含实例构造函数(C# 编程指南)。 因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。 使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。 静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。 何时使用静态类 假设有一个类 CompanyInfo,它包含用于获取有关公司名称和地址信息的下列方法。1 class CompanyInfo 2 3 4 5 public string GetCompanyName() return CompanyName; 6 7 public string GetCompanyAddress() return CompanyAddress; 8 9 /. 10 11 不需要将这些方法附加到该类的具体实例。因此,您可以将它声明为静态类,而不是创建此类的不必要实例,如下所示:12 static class CompanyInfo 13 14 15 16 public static string GetCompanyName() 17 return CompanyName; 18 19 public static string GetCompanyAddress() 20 return CompanyAddress; 21 22 /. 23 24 使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使您的实现更简单、迅速,因为您不必创建对象就能调用其方法。以一种有意义的方式组织类内部的方法(例如 System 命名空间中的 Math 类的方法)是很有用的。静态成员 即使没有创建类的实例,也可以调用该类中的静态方法、字段、属性或事件。如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的 一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦 的静态方法。 在成员的返回类型之前使用 static 关键字来声明静态类成员,例如:25 public class Automobile 26 27 28 29 public static int NumberOfWheels = 4; 30 31 public static int SizeOfGasTank 32 33 34 35 get 36 37 38 39 return 15; 40 41 42 43 44 45 public static void Drive() 46 47 public static event EventType RunOutOfGas; 48 /other non-static fields and properties. 49 50 静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置。例如:51 Automobile.Drive(); 52 53 int i = Automobile.NumberOfWheels; C#技术基础试题判断题1.在C#中,所有类都是直接或间接地继承System.Object类而得来的。答案:对2.在C#中,任何方法都不能实现多继承。答案:错3.在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。答案:对3.在C#类中,this代表了当前类本身。答案:错4.菜单项标题中有含有带下划线的字符,这是快捷键。答案:错5.在C#Net中,窗体父子关系通过“属性”窗口来创建。答案:对6.静态类和实例类的区别在于:静态类不需要初始化即可直接使用,实例类需要进行实例化,生成对象才可使用。答案:对7.使用Directory类的Move()方法可以删除文件。答案:错8.使用FileInfo类的Copy()方法可以复制文件。答案:对9.DataSet对象中的表可以和数据库中的表同名,也可以不同名。答案:对10.Command对象可以执行SQL语句。答案:对静态和实例类成员属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也称为共享成员,尤其是Visual Basic用户常常使用这个术语),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和 静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。例如,前面使用的Console.WriteLine()和 Convert.ToString()方法就是静态的,根本不需要实例化Console 或 Convert类(如果试着进行这样的实例化,操作会失败,因为这些类的构造函数不是可公共访问的,如前所述)。许多情况下,静态属性和方法有很好的效果。例如,可以使用静态属性跟踪给类创建了多少个实例。在UML语法中,类的静态成员用下划线表示,如图8-5所示。 图 8-51. 静态构造函数使用类中的静态成员时,需要预先初始化这些成员。在声明时,可以给静态成员提供一个初始值,但有时需要执行更复杂的初始化,或者在赋值、执行静态方法之前执行某些操作。使用静态构造函数可以执行此类初始化任务。一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,也不能带任何参数。静态构造函数不能直接调用,只能在下述情况下执行:创建包含静态构造函数的类实例时访问包含静态构造函数的类的静态成员时在这两种情况下,会先调用静态构造函数,之后实例化类或访问静态成员。无论创建了多少个类实例,其静态构造函数都只调用一次。为了区分静态构造函数和本章前面介绍的构造函数,也将所有非静态构造函数称作实例构造函数。2. 静态类我们常常希望类只包含静态成员,且不能用于实例化对象(如Console)。为此,一种简单的方法是使用静态类,而不是把类的构造函数设置为私有。静态类只能包含静态成员,不需要实例构造函数,因为按照定义,它根本不能实例化。但静态类可以有一个静态构造函数,面向对象语言的特性1.继承 继承是一种层次模型,可以实现累的重用,他提供了一种明确表达共性的方法。一个新类可以从现有的类中继承,这个过程称之为类继承。新类继承了原始类的特性,新类称之为子类,原始类称之为父类。子类可以从他的父类中继承方法和实例变量,并且子类可以覆盖父类中的方法或添加新的方法。2.封装 封装是把数据和过程给包围起来,对数据的访问只能通过给定的界面。面向对象计算始于这个基本概念,即现实世界是一个完全自制,封装的对象,这些对象通过一个受保护的接口访问其他对象。3.多态性 多态

温馨提示

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

最新文档

评论

0/150

提交评论