10.1 成员定义
·public--成员可以由任何代码访问。
·private-成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字)
·internal--成员只能由定义它的项目(程序集)内部的代码访问。
·protected-成员只能由类或派生类中的代码访问。
10.1.1 定义字段
class MyClass
{
public int myInt;
}
字段也可以使用关键字readonly,表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值。例如:
class MyClass
{
public readonly int MyInt = 17;
}
也可以用static关键字 声明为静态
class MyClass
{
public static int MyInt;
}
10.1.2 定义属性
属性拥有两个类似于函数的块,一个块用于获取属性的值(get),另一个块用于设置属性的值(set)。
// 命名规范--属性 PascalCasing
public int MyIntProp
{
get
{
//Property get code.
}
set
{
//property set code.
}
}
get块必须有一个属性类型的返回值,简单的属性一般与私有字段相关联,以控制对这个字段的访问,此时get块可以直接返回该字段的值,例如:
//Field used by property
private int myInt;
//Property
public int MyInt Prop
{
get
{
return myInt;
}
set
{
//Property set code.
}
}
注意:类外部的代码必须使用属性来访问字段。set函数以类似的方式以类似的方式把一个值赋给字段。
//Filed used by property.
private int myInt;
//Property.
public int MyIntProp
{
get
{
return myInt;
}
set
{
myInt = value;
}
}
属性可以使用virtual,override和abstract关键字。
10.1.3 定义方法
//命名规范-方法 PascalCasing
class MyClass
{
public string Getsring ()
{
return "here is a string.";
}
}
关键字
·virtual---方法可以重写。
·abstract--方法必须在非抽象的派生类中重写(只用于抽象类中)。
·override--方法重写了一个基类方法(如果方法被重写,就必须使用该关键字)。
·extern--方法定义放在其他地方。
下面的代码时方法重写的一个示例:
public class MyBaseClass
{
public virtual void DoSomething()
{
//Base implementation
}
}
public class MyDerivedClass: MyBaseClass
{
public overrive void DoSomething()
{
//Derived class implementation,override base implemenatation.
}
}