类相关概念
C#中定义一个类的方法与JAVA一致,通过class关键字来定义。
字段
定义一个字段需要3个部分,访问修饰符,字段类型,以及字段名称。
public class Author{
private string name; //private static string name
private int age; //private const int age
private bool isAlive; //private readonly bool isAlive
}
实例字段可以用readonly,const来修饰。readonly表示字段只读,const表示字段不可变。字段前用static修饰表示声明一个静态字段。
- readonly:被readonly修饰的字段可以利用构造函数进行初始化。
- const:被const修饰的字段必须在定义字段时直接初始化。通过new Author().age访问。
- static:静态成员只会被创建一次。通过Author.name进行访问。
属性
基于面向对象的编程思想,属性是C#对字段的扩展,目的是更方便的对字段进行操作。
不使用属性时:
public class Author{
//字段必须为私有类型
private string name;
//公有类型的getter方法
public string getName(){
return name;
}
//公有类型的setter方法
public void setName(string value){
name = value;
}
}
使用属性时:
public class Author{
//字段必须为私有类型,字段名小写
private string name;
//公有类型的getter方法,属性名大写
public string Name{
//get访问器
get{
return name;
}
//set访问器, value为隐式参数
set{
name = value;
}
}
}
属性的类型必须与字段的类型一致,只读属性可以直接忽略set访问器编写或者用private关键字修饰set访问器,只写属性只能采用private关键字修饰get访问器,不可忽略get访问器的编写。访问器中可以加入逻辑代码。
C#3.0对属性进行优化,可以用如下的方式定义属性:
public class Author{
//public来修饰属性,属性名称大写
public string Name{get; set;}
//只读属性可以采用以下两种方式
public string Name{get; private set;}
public string Name{get;}
//只写属性
public string Name{private get; set;}
}