namespace On_Wednesday_17th_March
{
    public class Person
    {
        private int age;
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                if (value > 0 && value < 100)
                {
                    age = value;
                }
                else
                    throw new Exception("Warning:The age is not between 0 and 100");
            }
        }
        public Person()
        {
        }
        public Person(int newAge)
        {
            age = newAge;
        }
            
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person person1 = new Person();
            person1.Age = -10;
            // 此时会抛出Exception;
            Person person2 = new Person(-10);
            //晕了,此时并没有丢出异常
            /// 怎么会这样啊,希望高手指导下,小弟新人没分,唉!
        }
    }
}

解决方案 »

  1.   

    age = newAge; 你这根本不走Age set方法怎么可能抛异常...注意大小写,你这种字段名不合规范...去看看MSDN中关于属性的定义...
      

  2.   

    第二个是直接FIELD赋值,没有走PROPERTY
      

  3.   

    因为LZ你在
    public Person(int newAge)
    {
    age = newAge;
    }
    这里面没有对Age进行异常判断啊,而是直接赋值了。通过构造函数对属性赋值和类属性赋值是不一样的,虽然最后都是对属性赋值,但是过程是不同的啊