2017-11-25 1 views
-1

私はVBAの開発者および下記C# に新しいですが、私の従業員クラスである:私は私のEmployeeclassのオブジェクトを作成するとクラスフィールドを変更するためのメソッドの使用をユーザーに強制し、直接変更しないでください。

class Employee 
{ 
    public string name; 

    public Employee() 
    { 
     age = 0; 
    } 

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

、私は名前

の値を設定するためのメソッドを使用できます
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#リファレンス)] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private) – Nkosi

+0

フィールド/プロパティをpublicではなくprivateにして、クラス外の他の関数ではできないようにしますそれらにアクセスする –

答えて

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; 
    } 
} 

注:パブリックメンバーがそのオブジェクトを使用して、クラス外部からアクセスすることができながら、クラスのプライベートメンバーのみクラス定義内でアクセスすることができます。

それとも、単にproertyを使用して

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

、などのプロパティを使用し、あなたがパブリックプロパティを使用し、下記のようなフィールドprivateをしたいと思い

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

、として名前を設定することができます。同じように別のセッターメソッドを実行する必要はありません。

class Employee 
{ 
    private string name; 

    public Employee() 
    { 
     age = 0; 
    } 

    public string Name 
    { 
     get {return name; } 
     set { name = value; } 
    } 
} 
関連する問題