私有属性与set / get和私有属性之间有什么区别没有在C#中设置get

时间:2017-02-24 11:44:28

标签: c#

我是C#的新手。我们在一个类中声明私有成员变量,使它们从声明它们的类之外不可访问,但是我们可以简单地声明它们是私有的'那么使用set和使用它们的需要是什么?例如,我有一个班级客户

class Customer 
    {
        private double TotalPurchases; // { get; set; }
        private string Name; // { get; set; }
        private int CustomerID; // { get; set; }
        public Customer(double tp, string nam, int id) 
        {
            TotalPurchases = tp;
            Name = nam;
            CustomerID = id;
        }

        public void value() 
        {
            Console.WriteLine("Total purchases so far " + TotalPurchases + " " + Name + " " + CustomerID);
        }
    }

    class Program 
    {
        static void Main() 
        {
            // Intialize a new object.
            Customer cust1 = new Customer(20.0, "C#", 10);
            cust1.value();
            Console.ReadLine();
        }
    }

当我删除客户类中的评论并允许属性使用set和get时,它完全没有区别!!!

1 个答案:

答案 0 :(得分:3)

如果没有get; set;,则其行为为Field,而Field则无法控制何时以及如何分配或检索Field

如果存在get set,您可以根据某些逻辑控制Property中剩余的值。

private string _foo;
public string Foo
{
    get
    {
        if (_foo == null) return string.Empty;
        return _foo;
    }
    set
    {
        if (value == null) return;
        _foo = value;
    }
}