不是都只能读么? 
是不是private set不能通过外部类赋值 而不设set连自己的类都不可以 
难道能在自己的类里赋值??怎么赋值 
比如我有个Person类 
里面有个_Pwd属性 
这样 
private public Pwd 

get{return _Pwd;} 
private set{value=Pwd;} 

和不设set有什么区别

解决方案 »

  1.   

    private public pwd?
    value=pwd?
      

  2.   

    数据类型好像没有public吧
    即使下面可以编译通
    public string Pwd 

    get{return _Pwd;} 
    private set{value=Pwd;} 

    但是 private set{value=Pwd;} 在调用时是受保护的不可用!
      

  3.   

    就是直接赋值和属性赋值的区别。
    设了private get,类成员函数可以用属性赋值;
    没有private get,类成员函数只能直接赋值。
        class A
        {
            string pwd;
            public event EventHandler PasswordChanging;        public string Pwd
            {
                get { return pwd; }
                private set 
                {
                    if (string.IsNullOrEmpty(value) )
                    {
                        throw new ArgumentException("password cannot be empty");
                    }
                    if (pwd != value)
                    {
                        if (PasswordChanging != null) PasswordChanging(this, EventArgs.Empty);
                    }
                    pwd = value;
                }
            }        void Test()
            {
                this.pwd = "abc";                 // 直接赋值,什么额外事情都不会发生
                this.Pwd = "efg";                 // 可以引发密码更改事件,可以进行校验
            }
        }
      

  4.   

    private public Pwd写错了
    应该是public string Pwd
    谢谢6楼的回答,懂了
      

  5.   

    对了,我还想问一下c#的默认级别到底是internal还是private
      

  6.   

    private public Pwd
    --------------------
    看到这个我吓了一跳,以为自己的技术已经退步到原始社会了。
      

  7.   

    不写set属性,就证明这个自段不能赋值,或不用赋值,比如ID是固定的不变的,就不用set属性。但get就是必须的了。不能只写set不写get,否则就没有意义了。