讨个说法

yepoint 2006-11-14 07:19:51

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
private int pv;
public int pu;

static void Main(string[] args)
{
}

private void set()
{
Program p = new Program();
p.pv = 1;//可以赋值,不明白为什么可以赋值 ??????????????
p.pu = 1;//可以赋值

}

}

class C
{
private void set()
{
Program p = new Program();
p.pv = 1;//不可以赋值
p.pu = 1;//可以赋值
}
}

}
...全文
203 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoku 2006-11-14
  • 打赏
  • 举报
回复
呵呵...看来lz跟我差不多了...

其实就是在第一个里面的作用域不一样而已了
shangfc 2006-11-14
  • 打赏
  • 举报
回复
作用域的规则:
1. public 可以被任意访问。
2. private 只能被类自身中的方法访问。
3. proteted 只能被类自身或它的子类访问。

可以看到,以上作用域的范围都是类,而不是对象。所以一个对象的可以访问同类对象的任意字段,属性,方法。
在实现IClone接口时,常常会用到类似的用法.如(VB代码):
public class MyClass
private Field1 as integer

public function Clone() as MyClass

dim obj as new MyClass()
obj.Field1=me.Field1

end function

end class

'用法
dim obj1 as new MyClass()
dim obj2 as MyClass = obj1.Clone()

希望我的回答对你有所帮助.
灰太狼 2006-11-14
  • 打赏
  • 举报
回复
private void set() 是成員函數,當然可以調用本類的成員變量了。
但是Program p = new Program(); 中的p是實例,隻能調用它的public成員函數和成員變量,不能調用private和protected的。相關的概念請參考msdn中的說明,或者找本C++或C#面對對象的書看看。

110,569

社区成员

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

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

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