如何强制用户使用方法更改类字段,而不是直接更改它?

时间:2017-11-25 11:14:34

标签: c# oop

我是VBA开发人员,是C#的新手 以下是我的员工类:

class Employee
{
   public string name;

   public Employee()
    {
       age = 0;
    }

    public void setName(string newName)
    {
        name = newName;
    }  
}

当我创建Employeeclass的对象时,我可以使用提供的方法来设置name的值

Employee E1 = new Employee();
E1.setName("Name 1");

或者我可以直接设置名称。

Employee E1 = new Employee();
E1.name = "Name 1"

重点是如何阻止用户直接设置我的字段的值/不调用我的方法,如果可以请告诉我如何有效地设置我的类字段的值。

3 个答案:

答案 0 :(得分:2)

只需使用属性而不是(公共)字段。

public class Employee
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            // Your setter-code here. Validation and stuff like that
            _name = value;
        }
    }
}

答案 1 :(得分:2)

您想使用公共属性并在下面创建字段private。你不需要一个单独的setter方法

class Employee
{
   private string name;

   public Employee()
    {
       age = 0;
    }

    public string Name
    {
      get {return name; }   
      set { name = value; }
    }  
}

答案 2 :(得分:-1)

您应该定义私有成员。

class Employee
{
   private string name;

    public void setName(string newName)
    {
        name = newName;
    }  
}

注意:只能在类定义中访问类的私有成员,而可以使用其对象在类外部访问公共成员。

或者,只需使用“属性”,

class Employee
{
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

使用proerty,您可以将Name设置为,

  Employee emp = new Employee();
  emp.Name = "suman";