没有新C#的构造函数

时间:2016-05-04 12:43:22

标签: c# constructor

我想知道如何编写这种类型的构造函数:

Person p = Person.CreateWithName("pedro");
Person p1 = Person.CreateEmpty();

让每个构造函数的代码分开。

3 个答案:

答案 0 :(得分:6)

那些是所谓的工厂方法,技术上是类(人)上的静态方法,然后在类(Person.Create)上调用。

从技术上讲,他们在内部使用new创建Person - 但它可以使用PRIVATE CONSTRUCTOR。

答案 1 :(得分:5)

您只需在该类中创建一个静态方法,即

class Person {
  public Person(string name) {
    //Constructor logic
  }
  public static Person CreatePerson() {
    return new Person(string.Empty);
  }
}

答案 2 :(得分:2)

您可以像这样实现:

  public class Person {
    // Private (or protected) Constructor to ensure using factory methods
    private Person(String name) { 
      if (null == name)
        name = "SomeDefaultValue";

      //TODO: put relevant code here
    }

    // Factory method, please notice "static"
    public static Person CreateWithName(String name) {
      return new Person(name); 
    }

    // Factory method, please notice "static"
    public static Person CreateEmpty() {
      return new Person(null); 
    } 
  }