在 C# 中,private 和 public 是访问修饰符(access modifiers),用于控制类成员的可见性和可访问性。这些修饰符决定了其他代码能否直接访问某个类的方法、字段或属性。
public
用途:允许从任何地方(包括不同命名空间和程序集)访问该成员。
适用范围:方法、字段、属性等都可以声明为 public,以便在外部代码中使用它们。
示例
using System;
public class Person
{
public string Name { get; set; }
public void SayHello()
{
Console.WriteLine($"Hello, my name is {Name}");
}
}
class Program
{
static void Main(string[] args)
{
var person = new Person();
person.Name = "Alice";
person.SayHello(); // 可以直接调用公共方法和访问公共属性
}
}
private
用途:只允许在同一类内部访问该成员,外部代码无法直接访问。
适用范围:主要用于实现类的内部逻辑,隐藏具体的实现细节。
示例
using System;
public class Person
{
private string name;
public void SetName(string newName)
{
this.name = newName; // 只能通过内部方法设置name字段值
}
public string GetName()
{
return this.name; // 只能通过内部方法获取name字段的值
}
public void SayHello()
{
Console.WriteLine($"Hello, my name is {this.Name}");
}
}
class Program
{
static void Main(string[] args)
{
var person = new Person();
// 下面两行代码会编译失败,因为name字段是private的
// person.name = "Alice";
// string aliceName = person.name;
person.SetName("Alice");
person.SayHello(); // 通过公共方法间接访问私有成员
}
}
总结
public:允许从任何地方(包括不同命名空间和程序集)访问该成员。适用于需要公开提供接口的方法、属性等。
private:只允许在同一类内部访问该成员,外部代码无法直接访问。适合用于实现具体的逻辑细节,并保护这些细节不受外界干扰。
其他访问修饰符
除了 public 和 private 之外,C# 还提供了其他访问修饰符:
protected:只允许在同一个类及其派生子类中访问。
internal:只允许在同一程序集内访问。
protected internal:同时具有内部和受保护的访问特性(即,同一命名空间、同一程序集或派生子类)。