'as'的重载/隐式运算符

Nas*_*eer 7 c# operator-overloading

class Person
{
   string Name;
   int Age;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够像下面一样隐式地将字符串转换为Person

var mrFoo = "Foo" as Person;
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过定义隐式转换来执行以下操作

Person mrFoo = "Foo";
Run Code Online (Sandbox Code Playgroud)

但我具体使用"as"运算符

Jon*_*eet 20

不,你做不到."as"运算符从不使用用户定义的转换 - 仅引用转化和拆箱转换.基本上,有问题的参考文献必须是正确的类型.

就我绝大多数情况而言,我个人强烈建议你远离转换操作符(尤其是隐式操作符).通常具有转换方法更清楚,例如Person.FromString(...).


Bri*_*ian 6

您是否考虑过使用参数化构造函数?

var mrFoo = new Person("Foo");

  • 这是最明智的做法. (2认同)