在面向对象编程(OOP)中,成员是类或对象所包含的属性、方法、事件、字段等的统称。它们定义了类的行为和状态。C# 中的成员有以下几种类型:
1. 字段(Fields)
字段是类中的变量,用于存储对象的状态。字段可以是实例字段(属于对象的每个实例)或静态字段(属于类本身)。
public class Person
{
public string Name; // 实例字段
public static int Population; // 静态字段
}
2. 属性(Properties)
属性是字段的扩展,提供了对字段的读写访问。属性可以包含 get 和 set 访问器。
public class Person
{
private string name; // 私有字段
public string Name // 公有属性
{
get { return name; }
set { name = value; }
}
}
3. 方法(Methods)
方法是类中的函数,用于定义类的行为。方法可以是实例方法(属于对象的每个实例)或静态方法(属于类本身)。
public class Person
{
public void Speak() // 实例方法
{
Console.WriteLine("Hello!");
}
public static void ShowPopulation() // 静态方法
{
Console.WriteLine("Population: " + Population);
}
}
4. 构造函数(Constructors)
构造函数是用于创建类的实例并初始化其状态的方法。构造函数的名称与类名相同,并且没有返回类型。
public class Person
{
public string Name;
public Person(string name) // 构造函数
{
Name = name;
}
}
5. 事件(Events)
事件是类中的一种成员,用于提供通知机制。事件通常与委托一起使用。
public class Alarm
{
public event EventHandler AlarmRang;
public void Ring()
{
if (AlarmRang != null)
{
AlarmRang(this, EventArgs.Empty);
}
}
}
6. 索引器(Indexers)
索引器允许对象像数组一样使用索引来访问其内部数据。
public class Team
{
private List<string> members = new List<string>();
public string this[int index]
{
get { return members[index]; }
set { members[index] = value; }
}
}
7. 嵌套类型(Nested Types)
类、结构、枚举或接口可以嵌套在另一个类中。
public class OuterClass
{
public class NestedClass
{
public void NestedMethod()
{
Console.WriteLine("Nested method");
}
}
}
成员的访问修饰符
成员的访问级别可以通过访问修饰符来控制:
public:公开访问,不受限制。
private:私有访问,只能在类内部访问。
protected:受保护访问,可以在类内部和派生类中访问。
internal:内部访问,只能在同一程序集内访问。
protected internal:受保护的内部访问,可以在同一程序集内或派生类中访问。
private protected:私有的受保护访问,只能在类内部和同一程序集的派生类中访问。