2017-11-25 63 views
-1

我是一个VBA开发者和新的C# 下面是我的Employee类:如何强制用户使用方法更改类字段,而不是直接更改它?

class Employee 
{ 
    public string name; 

    public Employee() 
    { 
     age = 0; 
    } 

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

当我创造我Employeeclass的对象,我既可以使用所提供的设置名称值的方法

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

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

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

整点是如何阻止用户设置我的领域直接/的价值不叫我的方法,如果你能告诉我,我怎么能有效地设置我的类字段的值。

+2

通过使字段私人。 [访问修饰符(C#编程指南)](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers)/ [private(C#Reference)] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private) – Nkosi

+0

使您的字段/属性为“private”而非public,以便类之外的其他函数不能访问它们 –

回答

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

您应该定义私人会员。

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,您可以设置名称为,

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

您想使用的公共属性,使现场private像下面。你不需要像你一样的单独的设置方法

class Employee 
{ 
    private string name; 

    public Employee() 
    { 
     age = 0; 
    } 

    public string Name 
    { 
     get {return name; } 
     set { name = value; } 
    } 
} 
相关问题