设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
最新文章
  .NET上传图片加文字…
 在vs.net bate…
 C#中利用正则表达式实现…
 Visual C#的SQ…
 关于使用存储过程创建分页
 通用分页显示查询存储过程
 大数据量的分页
 什么是web.confi…
 ASP.NET 配置文件…
 对“三层结构”的深入理解…
 多个关键字的查询问题
 VB和C# 语法对比图 …
 C#基础全接触
 用C#压缩和修复Acce…
 C#中的类型相等与恒等(…
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#中利用正则表达式实现…
 雅虎公司C#笔试题,看看…
 用Visual C# 2…
 C#学习第一天
 C#语言初级入门(1)
 VB和C# 语法对比图 …
 远程重启计算机(C#)
 什么是B/S三层?
 Visual C#的SQ…
 Visual C#常用函…
C#学习第七天
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

第五章 类

前一章讨论了数据类型和它们的用法.现在我们转移到C#中至关重要的结构——类.没有了类,就连简单的C#程序都不能编译.这一章假定你知道了一个类的基本组成部分:方法、属性、构造函数和析构函数.C#在其中增加了索引和事件.
在这一章中,你学到下列有关类的话题.
.使用构造函数和析构函数
.给类写方法
.给一个类增加属性存取标志
.实现索引
.创建事件并通过代表元为事件关联客户
.应用类、成员和存取修饰符.
5.1 构造函数和析构函数
在你可以访问一个类的方法、属性或任何其它东西之前,
   第一条执行的语句是包含有相应类的构造函数.甚至你自己不写一个构造函数,也会有一个缺省的构造函数提供给你.
class TestClass
{
    public TestClass( ): base( )
    {
    }
    //
   由编译器提供
}
一个构造函数总是和它的类名相同,但是,它没有声明返回类型.总之,构造函数总是public的,你可以用它们来初始化变量.
public TestClass( )
{
    // 在这给变量
    // 初始化代码等等.
}
如果类仅包含静态成员( 能以类型调用,而不是以实例调用的成员 ),你可以创建一个private的构造函数.
private TestClass( )
{
}
尽管存取修饰符在这一章的后面将要大篇幅地讨论,但是private意味着从类的外面不可能访问该构造函数.所以,它不能被调用,且没有对象可以自该类定义被实例化.
并不仅限于无参数构造函数——你可以传递初始参数来初始化成员.
public TestClass( string strName,
int nAge )
{
    ...
}
作为一个C/C++程序员,你可能习惯于给初始化写一个附加的方法,因为在构造函数中没有返回值.当然,尽管在C#中也没有返回值,但你可以引发一个自制的异常,以从构造函数获得返回值.更多有关异常处理的知识在第七章
"异常处理"中有讨论.但是,当你保留引用给宝贵的资源,应该想到写一个方法来解决:一个可以被显式地调用来释放这些资源.问题是当你可以在析构函数( 以类名的前面加"~"的方式命名 )中做同样的事情时,为何还要写一个附加的方法.
public ~TestClass( )
{
    // 清除
}
你应该写一个附加方法的原因是垃圾收集器,它在变量超出范围后并不会立即被调用,而仅当间歇期间或内存条件满足时才被触?当你锁住资源的时间长于你所计划的时间时,它就会发生?
因此,提供一个显式的释放方式是一个好主意,它同样能从析构函数中调用.
public void Release( )
{
    // 释放所有宝贵的资源
}

public
~TestClass( )
{
    Release( );
}
调用析构函数中的释放方法并不是必要的——总之,垃圾收集会留意释放对象.但没有忘记清除是一种良好的习惯.

本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright © 20010-20012
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号