public class P1
    {
        public int Age;
    }

把字段的访问修饰符设置成public破坏了面向对象程序设计(OOP)的封装性,所以得改成

public class P2
    {
        int _Age; 
        public int Age
        {
            get
            {
                return _Age;
            }
            set 
            {
                _Age = value;
            }
        }
    }

这样其他类可以通过属性Age访问字段_Age了。

当然,您还可以加上验证

    public class P3
    {
        int _Age; 
        public int Age
        {
            get
            {
                return _Age;
            }
            set
            {
                if (value > 0 && value < 150)
                    _Age = value;
            }
        }
    }

还可以设置成只读,只写等。

好心的微软为了让您方便,P2还可以写成

    public class P2
    {
        public int Age { get; set; }
    }

效果一样,相当优雅,使用方便,然后就非常熟练了,然后就出现了P3的情形

    public class P3
    {
        private int Age { get; set; }
    }

这样的私有属性,是不是不应该有?