浏览 3735 次
锁定老帖子 主题:C# 语法书 <3> 静态类,别名等等
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-30
静态类 适用范围: C# 2.0以以后版本 在C# 2.0之前的版本里,你是无法将一个类声明成静态的。如果我们希望一个类是静态的,也就是希望强制要求这个类中的所有成员都应该为静态的,就无能为力了,唯一能做的就是自己注意将所有的成员声明为static。 当我们忘记对一个本应是静态的成员使用static修饰符(尽管这是一个“低级错误”,但仍有可能发生)时,将会产生难以预料的错误。最重要的是,对于一个逻辑上的静态类(所有成员均使用static修饰符进行声明的类),我们甚至可以声明该类的一个变量并使用new操作符产生该类的实例!这显然不是我们所期望的。 在C#2.0中,则提供了静态类这一概念,允许static修饰符对类进行修饰。如果一个类声明中包含了static修饰符,那么这个类中的所有成员将被强制要求声明为静态的。这时,如果我们故意在类中声明实例成员或是不小心忘记了成员声明中的static修饰符,则编译器会报告错误: error CS0708: '<some field>': cannot declare instance members in a static class 同时,如果我们声明该类的变量或是试图建立该类的一个实例时,如下面的代码: 则会得到下面的两个编译错误: error CS0723: Cannot declare variable of static type '<some class>' error CS0712: Cannot create an instance of the static class '<some class>' 名称空间别名 在C#中,通过使用using指令,我们可以向编译器指定一系列命名空间,当程序中出现了类名字时,编译器会自动到这些命名空间中查找这个类。 但是两个命名空间中很可能具有同名的类,而我们恰好需要用到这些同名的类。这种情况会经常发生。 譬如在.net框架类库中就存在有三个Timer类:System.Timer.Timer、System.Threading.Timer和System.Windows.Forms.Timer。 这时,尽管我们使用了using指令,我们仍然需要在这些类出现时加上名称空间: using System.Timer; using System.Windows.Forms; // ...... public class MainForm : Form { System.Timer.Timer CheckTimer; System.Windows.Forms.Timer AnimateTimer; // ...... } 在C#2.0中,我们可以使用using指令来为名称空间指定一个别名。当我们需要引用这个命名空间时,可以简单地使用它的别名。 为命名空间创建一个别名时,我们使用using指令的扩展用法:using Alias = Namespace,即可为命名空间Namespace指定一个别名Alias。 当我们引用一个名称空间中的类型的时候,只需要在命名空间后面加一个圆点“.”再跟上类型名称即可: using SysTimer = System.Timer; using WinForm = System.Windows.Forms; // ...... public class MainForm : WinForm.Form { SysTimer.Timer CheckTimer; // 与命名空间的使用完全相同 WinForm.Timer AnimateTimer; // ...... } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |