【C#学习】构造函数和析构函数
2017-08-21 16:18
357 查看
前言
C#中,构造函数和析构函数与C++的表现很不一样,从调用时机、修饰符等方面都有区别。C#中,构造函数可以由 public、private等修饰,而析构函数则不能有访问限制修饰符。构造函数和析构函数都没有返回值,析构函数没有参数。一个类只能有一个析构函数。而对于 struct, C#不允许程序员显示提供默认构造函数,编译器始终会提供一个默认构造函数,程序员只能定义带参数的构造函数。构造函数
和C++一样,一旦程序员提供了一个非默认构造函数,编译器就不再提供默认构造函数,如果要使用默认构造函数的话,此时必须手动创建一个默认构造函数,编译器不会为程序自动创建。对象初始化表达式
C# 3.0起允许在初始化时为 public 字段赋值。public class A { public char a; public char b; public char c; public static int S = 1; public void f() { S = 2; } public A(int a) { } } public static void Main(string[] args) { int n = A.S; A a; a = new A(1) { a = 'a', b = 'b' }; }表达式大括号里的内容 a = 'a' , b = 'b' 在调用构造函数后才执行。
静态构造函数
C#允许在类中定义一个 static 构造函数,而且这个函数必须没有任何参数,且不能用访问限制修饰符修饰(默认为 public)。class A { public A() { } public A(int n) { } static A() { Console.Write("static A()"); } } public static void Main(string[] args) { A a = new A(); A b = new A(); }上述代码打印
static A()
static 构造函数只在第一次使用该类(构建该类的一个实例)的时候调用,在程序的生命周期中,static 构造函数只会调用一次。
析构函数
析构函数用来释放资源,比如删除占有的资源,断开与数据库的连接等。在C#中,程序员无法显式调用析构函数。CLR(公共语言运行时)负责管理内存中的所有对象,并使用 GC 自动销毁无用的对象。通过静态类GC的Collect方法可以强制进行GC操作。GC,Collect();
相关文章推荐
- 初步学习“C#中构造函数和析构函数的用法”
- C#学习——构造函数和析构函数
- c#学习笔记-构造函数和析构函数
- (原创)c#学习笔记09--定义类03--构造函数和析构函数
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数
- C#学习笔记整理_深入剖析构造函数、析构函数
- C#学习基本概念之构造函数之四--静态构造函数
- 【C++学习】构造函数、拷贝构造函数、析构函数小结
- C#中构造函数和析构函数的用法
- C++学习(构造函数与析构函数、对象数组与对象指针)
- C++学习之构造函数、析构函数
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- C++学习笔记(调用构造函数和析构函数的顺序)
- 【C#学习笔记】类构造函数使用
- C#中构造函数和析构函数的用法_C#教程
- C# this调用构造函数及析构函数
- C#中构造函数和析构函数的用法
- C++学习摘要之二:构造函数和析构函数
- C#温故而知新学习系列之面向对象编程—析构函数(十六)
- C++学习体会--构造函数,析构函数,拷贝构造函数