日期:2014-05-18  浏览次数:21084 次

c#中的private为什么这样呀?
大家看:
public   class   Student
{
        private   string   name;//姓名
        private   string   bankaccount;//银行账户
        //返回朋友的姓名
        public   string   getfriendname(Student   s)
        {
                return   s.bankaccount;
        }
}
这是可正常编译和运行的,当然返回的是朋友的银行账户了,但在c++中,类似的情况是不可能的,会提示编译错误,为什么c#中这么设计呀?

如果我不想让getfriendname函数访问s的bankaccount字段,该如何实现呀???

------解决方案--------------------
sf
------解决方案--------------------
private static string bankaccount;
加个static就不能用实例访问了
------解决方案--------------------
public string getfriendname(Student s)
{
return " ";//----> 这样就访问不了了
}

其实, 这个东东你怎么设计的就怎么返回给你, 既然你都return s.bankaccount了, 居然还要求不允许外面调用? 这不是矛盾了么?
------解决方案--------------------
public class Student
{
private string name;//姓名
private string bankaccount;//银行账户
//返回朋友的姓名
public string getfriendname(Student s)
{
return s.bankaccount;
}
}
你这里很乱,student类中已经有student的信息了,为什么还要传入?难道你传入一个新的student对象,只为了得到新对象的名字?那为什么不在对象的类中加入这个属性?
//你的意思是一定要返回s.name?
------解决方案--------------------
我的意思是:怎样才能不允许一个Student类的实例访问另一个Student类的实例中的private变量?

===========

那你的意思是不是现在的你, 可以在别的类中访问到你Student类的private变量啊?
------解决方案--------------------
感觉这样设计更好:
public class Student
{
private string name;
private string bankaccount;
public string Name
{
get
{ return name}
}
这样一个对象就可以得到对象的名字了,如果你一定要知道当前对象的所有的朋友,那么在类中加入一个HastTable(数组)就可以维护了,
------解决方案--------------------
昏迷……

先搞清楚private的含义,C++也是这样的。
------解决方案--------------------
public class Student
{
private string name;//姓名
private string bankaccount;//银行账户
//返回朋友的姓名
public string getfriendname(Student s)
{
return s.bankaccount;
}
}


===========

对于你的这个类, 就目前你说的来看, 写得很不如人意

首先, 既然你一直强调外部不允许访问Student的private变量, 那为什么你要写一个public的方法去访问它的private变量?

其实, 为什么你的类里面的public方法会以自身传参的? 你觉得这样有用么?


++++++++

如有说得不好, 不要介意^^


------解决方案--------------------
这是可正常编译和运行的,当然返回的是朋友的银行账户了,但在c++中,类似的情况是不可能的,会提示编译错误,为什么c#中这么设计呀?
============================
谁告诉你c++不是这样的, private 是指不能被外部类访问,而不是只类实例
------解决方案--------------------
楼住说错了吧

那个在C#下面也是编译不通过的
------解决方案--------------------
我的意思是:怎样才能不允许一个Student类的实例访问另一个Student类的实例中的private变量?
======================================================================
大哥~本来就不能啊,用private声明的变量说明它是这个类私有的,只能在这个类中对它进行操作,个人觉得你应该去把基础的书从头看看
------解决方案--------------------
这是可正常编译和运行的,当然返回的是朋友的银行账户了,但在c++中,类似的情况是不可能的,会提示编译错误,为什么c#中这么设计呀?