CompareTo 参数对象为什么可以访问私有变量

kinms 2008-07-29 07:49:52

class Person:IComparable<Person>
{
private string name;
private int age;
public Person(string name,int age)
{
this.name=name;
this.age = age;
}
public string Name
{
get { return name; }
}
public int Age
{
get { return age; }
}
public int CompareTo(Person p)
{
return this.age - p.age; //为什么可以取到私有变量
}
}

为什么参数对象p可以取到私有变量age了?
...全文
174 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyboxman 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kinms 的回复:]
引用 5 楼 liubiaocai 的回复:
私有变量在类内部可以共享啊,你哪个方法是在类内部当然可以访问到

你说的是对的,我在别的类里试了,确实不行.为什么在自己的类里用自己的对象参数,效果就不同了,这个也很令人费解.
难道类里调用自己的对象参数,有另一个机制??
[/Quote]
如果把类比作一个黑盒子
那么私有变量就是这个盒子内部的东西
kinms 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liubiaocai 的回复:]
私有变量在类内部可以共享啊,你哪个方法是在类内部当然可以访问到
[/Quote]
你说的是对的,我在别的类里试了,确实不行.为什么在自己的类里用自己的对象参数,效果就不同了,这个也很令人费解.
难道类里调用自己的对象参数,有另一个机制??
happyboxman 2008-07-29
  • 打赏
  • 举报
回复
外部对象如何才能访问你的私有变量呢?
直接访问显然不行
那么只能通过你公布的方法或者属性访问啊
如果对于相应的私有变量,你没有公布任何可以访问它的方法或者属性,那么就是绝对私有的,不能被外部访问

但是
一般总是有外部需要间接访问的吧。
lawbc 2008-07-29
  • 打赏
  • 举报
回复
私有变量在类内部可以共享啊,你哪个方法是在类内部当然可以访问到
gomoku 2008-07-29
  • 打赏
  • 举报
回复
int CompareTo(Person p) is a member function of the Person class.
By definition, private members are visible to member functions.
kinms 2008-07-29
  • 打赏
  • 举报
回复
那这样,不都可以通过方法的对象参数,访问任意对象的私有成员,那还有什么安全性了?
bwangel 2008-07-29
  • 打赏
  • 举报
回复
有没有搞错,连自己都不能访问自己的私有变量,那还有谁能访问?
sapphiron 2008-07-29
  • 打赏
  • 举报
回复
不是CompareTo里面好像也可以.....
不理解了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧