2017-08-15 18 views
-10

私はこのコードがJavaで入力されているのを見ました。C#でメソッドを連続して呼び出す方法は?

PersonInfo result = personInfoBuilder 
      .setName("MISTAKE") 
      .setAge(20) 
      .setFavoriteAnimal("cat") 
      .setFavoriteColor("black") 
      .setName("JDM") 
      .setFavoriteNumber(7) 
      .build(); 

と私はこの方法で試しました。

public class PersonInfo 
{ 
    public int Age { get; set; } 
    public string Name { get; set; } 
} 

public class PersonBuilder 
{ 
    private PersonInfo _personElement = null; 

    private int age; 
    private string name; 

    public void SetAge(int age) 
    { 
     this.age = age; 
    } 

    public void SetName(string name) 
    { 
     this.name = name; 
    } 

    public PersonInfo GetPerson() 
    { 
     _personElement = _personElement ?? new PersonInfo(); 
     _personElement.Age = age; 
     _personElement.Name = name; 

     return _personElement; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     PersonBuilder builder = new PersonBuilder(); 
     builder.SetName("he") 
       .SetAge(20); 

    } 
} 

[リソースは匿名アクセスでは利用できません。クライアント認証が必要です。]、

JavaのようにC言語でメソッドを連続して呼び出す方法はありますか?

+0

どうやって試しましたか? –

+4

* "私はバイクのコーナーをカットしていましたが、車で試しましたが動作しませんでした" * – Filburt

+2

クラス 'PersonInfoBuilder'を作成し、インスタンスを初期化し、すべてのメソッドがこのインスタンスを返すようにしてください。 'Build'メソッドは、指定されたプロパティを持つ' PersonInfo'のインスタンスを返します。 –

答えて

3

提案したコードをビルダーパターンといいます。ここで私のC#コードでビルダーパターンを行う方法です。

ビルダークラス

class PersonInfo 
    { 
     private string name, animan, color; 
     private int age, num; 

     private PersonInfo() { } 

     public class Builder 
     { 
      PersonInfo info = new PersonInfo(); 

      public Builder setName(string name) { info.name = name; return this; } 
      public Builder setAge(int age) { info.age = age; return this; } 
      public Builder setFavoriteAnimal(string animan) { info.animan = animan; return this; } 
      public Builder setFavoriteColor(string color) { info.color = color; return this; } 
      public Builder setFavoriteNumber(int num) { info.num = num; return this; } 

      public PersonInfo build() 
      { 
       return info; 
      } 
     } 
    } 

、ここでは、あなたがそれを使用する方法です。

PersonInfo.Builder personInfoBuilder = new PersonInfo.Builder(); 
PersonInfo result = personInfoBuilder 
            .setName("MISTAKE") 
            .setAge(20) 
            .setFavoriteAnimal("cat") 
            .setFavoriteColor("black") 
            .setName("JDM") 
            .setFavoriteNumber(7) 
            .build(); 
関連する問題