class Person
{
string Name;
int Age;
}
我希望能够将字符串强制转换为Person,如下面的
var mrFoo = "Foo" as Person;
我知道我可以通过定义隐式转换
来执行以下操作Person mrFoo = "Foo";
但我特意使用“as”运算符
答案 0 :(得分:20)
不,你不能这样做。 “as”运算符从不使用用户定义的转化 - 仅引用转化和拆箱转化。基本上,有问题的参考文献必须是正确的类型。
对于绝大多数情况,我个人强烈建议你远离转换操作符(尤其是隐式操作符)。通常具有转换方法更清晰,例如Person.FromString(...)
。
答案 1 :(得分:6)
您是否考虑过使用参数化构造函数?
var mrFoo = new Person(“Foo”);
答案 2 :(得分:4)
无需使用as
运算符,因为您可以使用implicit
运算符执行此操作:http://msdn.microsoft.com/en-us/library/z5z9kes2(v=vs.71).aspx
这些方面应该有效:
public static implicit operator Person(string s)
{
Person p = new Person() {Name = s};
return p;
}
现在你可以做到:
Person p = "John Doe";