C# 中的构造函数

类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行。

构造函数的名称与类的名称完全相同,它没有任何返回类型。

下面的实例说明了构造函数的概念:

using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line()
{
Console.WriteLine("对象已创建");
} public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
} static void Main(string[] args)
{
Line line = new Line();
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
Console.ReadKey();
}
}
}

当上面的代码被编译和执行时,它会产生下列结果:

对象已创建
线条的长度: 6

默认的构造函数没有任何参数。但是如果您需要一个带有参数的构造函数可以有参数,这种构造函数叫做参数化构造函数。这种技术可以帮助您在创建对象的同时给对象赋初始值,具体请看下面实例:

using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line(double len) // 参数化构造函数
{
Console.WriteLine("对象已创建,length = {0}", len);
length = len;
} public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
} static void Main(string[] args)
{
Line line = new Line(10.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
Console.ReadKey();
}
}
}

当上面的代码被编译和执行时,它会产生下列结果:

对象已创建,length = 10
线条的长度: 10
线条的长度: 6

C# 中的析构函数

类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。

析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。

析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。

下面的实例说明了析构函数的概念:

using System;
namespace LineApplication
{
class Line
{
private double length; // 线条的长度
public Line() // 构造函数
{
Console.WriteLine("对象已创建");
}
~Line() //析构函数
{
Console.WriteLine("对象已删除");
} public void setLength( double len )
{
length = len;
}
public double getLength()
{
return length;
} static void Main(string[] args)
{
Line line = new Line();
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
}
}
}

最新文章

  1. 在Windows Server 2012 R2上安装SharePoint 2013 with SP1失败,提示没有.net4.5的解决办法
  2. 如何在Flex标签中写事件函数
  3. Eclipse的使用及Java程序的标识符和关键字
  4. PHP 函数
  5. weinre 手机端页面调试
  6. AppStore IAP 客户端校验代码
  7. Javascript模块化编程:模块的写法
  8. linux学习笔记之文件结构和函数
  9. Flash,EEPROM差别
  10. 输入 URL 到页面完成加载过程中的所有发生的事情?
  11. QT LNK2019 无法解析的外部符号
  12. golang 互斥锁和读写锁
  13. Qt源码学习之信号槽
  14. IDEA+JUnit
  15. (转)每天一个linux命令(44):top命令
  16. c# ef
  17. thinkphp5 查询的数据是对象时,获取原始数据方法
  18. SSL编程(3).NET实现SSL服务端
  19. 如何在linux中批量建立用户并设置随机密码
  20. 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:

热门文章

  1. 从ffmpeg filter里出来的数据直接送给avcodec_encode_audio2编码,写文件有错。
  2. html5 3D圣诞树源码
  3. Java NIO(一) 初步理解NIO
  4. Java 高阶 —— 相等性比较
  5. 杂文笔记《Redis在万亿级日访问量下的中断优化》
  6. 【USACO】Optimal Milking
  7. c语言里如何调用汇编里的变量?
  8. java mysql编码问题
  9. c#重写 重载
  10. [翻译] 正式宣布 .NET 5