C#类

  • 默认修饰符为internal,即只能在当前项目中访问

构造函数

格式:

  • 修饰符 类名();
  • 修饰符 类名(参数表);

没有返回值,但不能用void修饰

一般使用public,因为构造函数由系统调用,如果私有就无法调用(系统调用也属于外部调用)

有参数列表就可以重载

析构函数

在实例对象销毁是被调用,一般用于释放资源等

不带返回值和参数,故不需要返回值类型和参数列表(无参数列表意味着析构函数不能重载)

使用时不用加public(暂时不知道为什么)

属性

本质上对对象的包装,体现封装性

格式:

1
2
3
4
5
6
7
8
9
10
访问修饰符 数据类型 属性名
{
get {
get访问器代码
}

set{
set访问器代码
}
}

只有get就是只读,只有set就是只写,二者都有就是可读可写


自实现属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*不需要检测数据合理性的情况下*/
public string ID { get; set; }


/*相当于*/
private string id = "hhhh";
public string ID
{
get
{
return id;
}
set
{
id = value;
}
}

this关键字

  • 类的非静态方法中使用
  • 指向引用该方法的实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class A
{
private int a;
private int b;
public A()
{

}
public A(int a, int b)
{//形参和实参相同时很实用
this.a = a;
this.b = b;
}
}

:表示调用此类的某个构造函数

表示在调用函数之前调用某个构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class A
{
private int a;
private int b;
private int c;

//构造函数重载的另一种写法

public A() : this(0,0,0) { } //大括号属于前面的函数
public A(int a) : this(a,0,0) { }
public A(int a, int b) : this(a,b,0) { }
public A(int a, int b, int c)
{
this.a = a;
this.b = b;
this.c = c;
}
}

内存回收

  • C#的CLR进行自动的内存管理,采用垃圾回收机制释放对象不再需要的内存空间。该机制通过调用析构函数完成

  • 编译器自动生成空的析构函数

readonly

const定义不能修改其值的实例变量,类的各个对象都可以使用

readonly定义只读变量,在构造函数中进行初始化,相当于对象自己的const变量