C#私有成员跨实例访问无报错?访问修饰符作用范围疑问
C#私有成员跨实例访问的规则说明
你对私有访问修饰符的作用范围理解确实有误。在C#里,私有成员的访问权限是类级别的,不是实例级别的——简单说就是:同一个类的任意实例,都能访问该类的私有成员,不管是不是当前方法所属的实例。
回到你的代码:
public class Lane { private int _filledSpots = 0; public bool IsSpaceAvailable(Lane fromLane) { return fromLane._filledSpots == 4; } }
IsSpaceAvailable方法属于Lane类,所以它可以直接访问任何Lane实例的私有字段_filledSpots,这完全符合C#的访问规则,因此VS Code不会报错。
这种设计是有实际意义的:比如在实现类的相等比较方法(如Equals)时,需要访问另一个同类型实例的私有成员来完成逻辑判断,类级别的私有访问权限能让这类内部逻辑更完整,同时又保证私有成员不会被其他外部类访问。
内容的提问来源于stack exchange,提问作者Saba Soft
相关产品推荐
相关产品推荐

