C#学习:构造、析构函数

 
. 构造函数
何时调用构造函数:
Class1 cl=new Class1();
New 运算符为对象分配内存,然后再调用对象的构造函数。
1.          构造函数:无返回值 与类同名,可以重载,在生成类的实例时调用,可以初始化字段,当然也可以加入代码获取目前生成的实例数
  class mode
{
Public mode() // 当然也可以是 private 类型
{
}
}
2 .静态构造函数:初始化静态成员变量
   class mode
{
Public mode() // 当然也可以是 private 类型
{
}
static mode() // 可以无类型修饰符,只在类加载时调用一次
{
}
 
}
2.          const  readonly 字段
1 const  隐式静态  , 必须 / 只能在声明时赋初值,每个类只有一个拷贝
public const uint ex=10;
public static const uint ex=10; // 错误
2 readonly  字段更加灵活,
1 )可以在构造函数中赋初值,可以是实例字段,
和字段类似,不过在构造函数外不能更改值
2 )如果要把 readonly 设置为静态,就必须显式声明
public static readonly uint ex=10; // 正确
4 从其他构造函数中调用构造函数(利用方法的重载)
class mode
{
Public mode():this(2) //
{
}
Public mode(int a) // 可以无类型修饰符,只在类加载时调用一次
{
}
 
}
 
5 派生类的构造函数
构造函数的调用顺序是先调用 System.Object , 再按照层次结构由上向下进行,直到到达要实例化的类为止。还要注意在这个过程中,每个构造函数都初始化它自己类中的字段。(可见,若有派生类构造函数不能声明为 private
在类中定义有参构造函数可以强制用户初始化字段 (而不是由系统设为空)
派生类默认调用其基类的无参构造函数。若其基类无无参构造函数(即显式定义了有参构造函数),则需要在派生类的构造函数中显式调用其基类的有参构造函数。
Class Base
{
Public Base(int a) //
{
}
}
class mode Base
{
Public mode():base(2) //
{
}
}
   析构函数
清理:析构函数 (C++ 开发人员扩展了析构函数的用法,不仅用于清理资源,还提供调试信息 )
C# 中由无用存储单元收集系统清理资源,不能预计析构函数会在什么时候运行,一般情况下不鼓励使用。
但在几种情况下使用:当删除变量时,需要采取一些措施(例如文件、数据库的闭合连接 : 是否无用存储单元收集系统无法处理,无用存储单元收集系统只是清理内存不用的 / 超过作用域的对象、变量。而文件、数据库是不由。 NET 管理的资源。在操作系统中还保持连接状态
1)           200 Finalize() 方法:传统意义的析构函数(工作方式:由无用存储单元收集系统在检测到实例已不再被引用时,就隐式调用 Finalize() 方法(客户程序无法控制)
Finalize() 方法缺乏确定性和对无用存储单元收集器性能的影响。所以应使用 Dispose() Close() 方法
2)          200 Dispose() Close() 方法
很大程度上是一种约定,不是 C# 语言的一部分,但对于 Dispose() 方法,在 C# 中有一些内部支持。
工作方式:应该明白任何客户机代码都应显式调用这个方法,来释放资源。
优点:资源在不需要时立即被释放,这对于象独占文件锁那样的对象来说是非常好的
缺点:客户机代码必须正常工作,并且调用该方法,如果不是这样,就被捆在这里
Dispose() Close() 方法之间的区别大体上是一个约定:
Close() :主要用于指定资源可能以后会再次打开。适合于关闭文件、数据库的连接
Dispose() :是一种最终处理,调用 Dispose() 意味着客户机代码最终会删除这个对象。适合于释放各种 GDI 或其他 Windows 对象的句柄
详细 202 如果要利用 Idisposable 结构,也可以自动 Dispose() ,即通过 using 关键字。
总结:可见对于存在文件、数据库、 GDI 或其他 Windows 对象的句柄是不由。 NET 管理的资源,在对象销毁后,要 显式调用这个 Dispose() 方法。或 Close() 不需要重写析构函数)
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值