【发布时间】:2013-10-28 01:56:26
【问题描述】:
各位,感谢您的宝贵时间。 正如我们所知,'Private' 和 'Protected' 这两个关键词对于防止一些方法、字段、属性在类外进行无效访问非常有用。但是我在特定情况下遇到了问题。下面是示例:
Class Node
{
public string Name {get; private set;}//Private setting authority
public int ID {get;set}
public Node Previous {get;set;}
public Node Next {get;set;}
public void Test()
{
this.Name='Valid';
this.Next.Name='Invalid';//Is this valid??
}
}
就像上面的代码一样,我们在这里得到了一个 'Node' 类,它有两个属性名为 'Previous' 和 'Next' 也是 'Node' 类型。现在让我们关注 'Test()' 方法。它是有效的设置 'this.Name',但是设置 'this.Next.Name' 很奇怪吗?不幸的是,编译器将此视为有效格式!
据我所知,“私人”意味着它不能在课堂外使用。但在这种情况下,我可以访问“以前”的任何非公共成员(私人/受保护等)和'下一个'。
这真的让我很困惑,请你给一些建议,谢谢!
【问题讨论】:
-
您想知道为什么可以访问另一个instance 的setter?您的代码属于同一类,即:
Node.
标签: c#