如何在不使用new关键字的情况下创建类的实例?

Beh*_*zad -5 c#

可以说我有一个类似下面的课程

public Class Person
{
  public string Firstname { set; get; }
  public string Lastname { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

这是一个问题,如何从Person类中获取实例,如下所示?

Person p = "AAAA BBBB";
Run Code Online (Sandbox Code Playgroud)

所以现在,Firstname等于AAAA,Lastname等于BBBB,我不想在我的类中使用构造函数,首先,是否可以这样做?那怎么样?

Dmi*_*nko 11

你可以实现operator(C#):

public class Person
{
  public string Firstname { set; get; }
  public string Lastname { set; get; }

  public static implicit operator Person(String value) {
    Person result = new Person();

    if (String.IsNullOrEmpty(value))
      return result;

    //TODO: More elaborated code required: check if there's no space, two or more spaces etc. 
    String[] items = value.Split(' ');

    result.Firstname = items[0];
    result.Lastname = items[1];

    return result;
  }
}

...

Person sample = "AAAA BBBB";
Run Code Online (Sandbox Code Playgroud)

  • @Behzad现在你知道了_may_做到了,你学到了隐式自定义转换运算符.好.**请记住,但不要这样做**.它不是_sugar_代码,而是(不是那么)微妙的错误的来源. (3认同)