私有变量与C#中的属性

时间:2015-07-14 15:10:23

标签: c# properties

我正在教自己C#,我很好奇需要声明公共属性访问的私有成员变量。我使用的教科书说这是为了封装,但为什么我需要私有变量开头,如果属性可以改变,取决于他们的' get'或者设置'功能?这是一个例子:

namespace Practice
{
    struct Person
    {
        private int id;
        private string name;

        public int ID { get {return id;} set {id = value;} }
        public string Name { get; set; }
        public int Age { get; set; }
    }
    class Program
    { 
        static void Main(string[] args)
        {

            Person person = new Person();
            person.ID = 548;
            person.Name = "Dude";

            Console.WriteLine(person.Name);
        }
    }
}

因此名称和ID的运作方式完全相同,那么声明private int idprivate string name的目的是什么?

1 个答案:

答案 0 :(得分:3)

在您的情况下,由于您没有对支持字段(私有字段)执行任何操作,因此您不需要它。您可以使用自动属性(但请记住,自动属性在后台使用支持字段)

如果您正在对其进行任何操作,那么有一个支持字段很有用,例如,如果您要验证ID应该始终大于100,那么您可以

public int ID
{
    get
    {
        return id;
    }
    set
    {
        if(id <= 100) throw new Exception("Invalid ID provided");
        id = value;
    }
}

如果您尝试在属性上应用相同的逻辑,而不是支持字段,那么您将/可能会遇到无限递归。