在一个项目中Model层看到一段代码:
public class PubCHClassInfo
    {
        public int Id;
        public string Name = string.Empty;
        public string Nick = string.Empty;
    }
请问这样写的目的是什么?和public class PubCHClassInfo
    {
            private int _id;
            public int Id
            {
                get { return _id; }
                set { _id = value; }
            }
           private string _name;
           public string Name
           {
                get{return _name;}
                set{_name = value;}
            }
    }
这样的写法有区别吗??

解决方案 »

  1.   

    带我的人教我用get,set你看看这个吧http://topic.csdn.net/u/20090323/09/E83B373F-1C8A-4051-895C-261A08C1F683.html
      

  2.   

    那像
    public string Name = string.Empty;没有get和set,那属于什么啊??
      

  3.   

    这个可能是个内部传递的实体吧,就没有用属性来封装字段public string Name = string.Empty;就是定义了一个string类型的公有字段Name,并赋初值为string.empty,既空字符串
      

  4.   

    字段public string Name { get; set; }
    //等价于
    private string _name;
     public string Name
     {
          get{return _name;}
         set{_name = value;}
    }
      

  5.   

    没有get set的 叫字段  有的叫属性为什么要属性呢~因为可以在set的时候附加一些控制 不要让使用者设置过分的值
    引用一下我在thinking in java看到一个很幽默的例子class Cat
    {
       public int height=10;
    }Cat cat=new Cat();
    cat.height=0; //这个可怜的猫就这样被压扁了但如果你用属性的话 就可以起到一定的控制 不要再让可爱的猫被压扁类成员: 总共用9个成员 分成两类
    数据成员:字段 常量 事件
    函数成员:方法 属性 构造函数 终结器 运算符 索引器最后补充 属性是特殊的方法  如果编译成IL语言 属性也编译成方法
      

  6.   

    面向对象之封装:        /// <summary>
            /// 宿舍管理
                    /// </summary>
            public int DormStatus
            {
                get { return m_nDormStatus; }
                set { m_nDormStatus = value; }
            }        /// <summary>
            /// 图书管理
                    /// </summary>
            public int LibStatus
            {
                get { return m_nLibStatus; }
                set { m_nLibStatus = value; }
            }