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#中这么设计呀?
==========
foyuan(暴走零零漆) 你好,我的程序是我发帖时写的,只是为了说明我的问题
请问,编译错误信息是什么?
=============
汗死...以上都是你自己说的
不用想啦, 错误信息就是s.bankaccount访问不了...
o...o
[解决办法]
不知道楼上的都试过了没有 我也奇怪 所以按楼主的意思写了个测试 发现确实存在这个问题 编译没错 运行时也能返回相同类的另一个实例的私有数据
[解决办法]
先搞清楚private的含义,C++也是这样的。
[解决办法]
C++也可以
[解决办法]
印象中C++也是一样的。
[解决办法]
但在c++中,类似的情况是不可能的,会提示编译错误
-------------------------------------------------
C++中也是可以的,不信LZ自己试试。
[解决办法]
up
[解决办法]
VS2005,以下C++程序编译通过:
class MyTestClass
{
private:
int i;
public:
MyTestClass()
{
i = 0;
}
int MyMethod( MyClass instance )
{
return instance.i;
}
}
我是搞不懂什么C++不能访问怎么得来的?
[解决办法]
粗粗估了一下,上面至少有四个人(包括我在内)都已经说明了无论是C#还是C++,都是能够访问的。
结果有超过二十个人(包括楼主)还在那里乱讲……
这就是CSDN。