学c#没多久,写程序很多都是照搬教材的,例如下面这段,使用没问题,但觉得这样繁复了点,可以精简吗?为什么前面是private(比较安全?),后面是  public ?
用.Add(new Person())添加后,要修改值怎么办?
     class Person
        {
            private string _a1;
            private string _a2;
            public Person(string a1, string a2)
            {
                this._a1 = a1;
                this._a2 = a2;
             }
            public string a1
            {
                get { return _a1; }
            }
            public string a2
            {
                get { return _a2; }
            }
        }

解决方案 »

  1.   

    你非要简化的话 可以简化为
    这个只在vs2008或者以上版本才可以
        class Person
        {
            public Person(string stra1, string stra2)
            {
                this.a1 = stra1;
                this.a2 = stra2;
            }        public string a1 { get; set; }        public string a2 { get; set; }
        }
    前面的是类变量 不需要全局访问 后边的是类属性 所以要public   和安全性没有关系添加set可以修改其值
      

  2.   

    private是私有的,只有成员自己才可以访问,防止外部对成员的破坏,而public是公开的,外部可以访问,实现外部对成员的访问(如调用或配置)
    所以private是很重要的
      

  3.   

    用.Add(new Person())添加后,要修改值怎么办?你的意思是放到集合里,不能访问它了?
    放到集合里还可以遍历来访问,也可以通过索引访问啊。集合a.Add(new Person())集合a[0].a1
    集合a[0].a2这样都可以
      

  4.   

    a[0].a1="louzhu",都是引用类型,没关系
      

  5.   

    List<Person> a = new List<Person>();
    a.Add(new Person(...))没问题,成功加入
    a[0].a1="louzhu",会出现
    错误 1 无法对属性或索引器“Person.a1”赋值 -- 它是只读的是不是我属性定义有问题
      

  6.   

    get 读
    set  写
    出现这个错误的原因是因为你的属性是只读的,你加个set就可以写了,可以改变其值
      

  7.   


    class Person
      {
      private string _a1;
      private string _a2;
      public Person(string a1, string a2)
      {
      this._a1 = a1;
      this._a2 = a2;
      }
      public string a1
      {
      get { return _a1; }
       set{_a1=value;}
      }
      public string a2
      {
      get { return _a2; }
      set{_a2=value;}
      }
      }