在此示例中使用get和set属性有什么好处?

时间:2014-03-21 00:32:02

标签: c# visual-studio-2012 properties

在以下示例中使用get和set属性有什么好处?:

class Program
{
    public class MyClass
    {
        private int age;

        public int persons_age
        {
            get
            {
                return age;
            }

            set
            {
                age = value;
            }
        }

    }

    static void Main(string[] args)
    {

       MyClass homer = new MyClass();

       homer.persons_age = 45; //uses the set property

       homer.persons_age = 56; //overwrites the value set by the line above to 56

       int homersage=homer.persons_age; //uses the get property

       Console.WriteLine(homersage);

    }
}

这样做和以下之间有什么区别?:

public class MyClass
    {
        public int age;
    }

 static void Main(string[] args)

    {

       MyClass homer = new MyClass();

       homer.age = 45;

       homer.age = 56; //overwrites the value set by the line above to 56

       int homersage=homer.age;

       Console.WriteLine(homersage);

    }

当上述两个程序的作用完全没有区别时,使用get和set属性有什么好处?与客户端通过某种逻辑检查通过set方法将字段分配给字段的能力有限的情况不同,在这种情况下,我不会看到这里显示的两个程序之间的任何功能差异。

此外,一些编程书使用短语" ...打破客户端代码"如果这些属性不用于类字段。有人可以解释一下吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我能想到的一个答案是,使用setter和getter方法,您可以在其中添加检查或验证。与通过声明公开直接访问它不同,检查/验证将落在不同的位置和可能的代码重复。 例如:

    public class MyClass
    {
        private int age;

        public int persons_age
        {
            get
            {
                return age;
            }

            set
            {
                if(value > 0)
                    age = value;
                else
                    //do something here
            }
        }

    } 

这样就可以定义对象的约束。