class Person
{
string Name;
int Age;
}
我希望能夠將一個字符串轉換爲個人隱象下面超載/對「爲」
var mrFoo = "Foo" as Person;
我知道我可以通過定義隱式轉換,請執行下列操作隱含操作
Person mrFoo = "Foo";
但我具體使用「as」運算符
class Person
{
string Name;
int Age;
}
我希望能夠將一個字符串轉換爲個人隱象下面超載/對「爲」
var mrFoo = "Foo" as Person;
我知道我可以通過定義隱式轉換,請執行下列操作隱含操作
Person mrFoo = "Foo";
但我具體使用「as」運算符
不,你不能這樣做。 「as」運算符從不使用用戶定義的轉換 - 僅引用轉換和拆箱轉換。基本上,有關的參考文獻必須是正確的類型。
就個人而言,我會強烈建議你遠離轉換操作符(尤其是隱式的),絕大多數情況下。通常具有轉換方法更清楚,例如, Person.FromString(...)
。
+1不做 – SLaks 2011-06-01 16:01:48
無需使用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";
那麼,您究竟能夠在密封系統類型中過載操作員?很確定你不能這樣做。 – 2013-09-10 04:25:39
您可以定義顯式轉換運算符重載,並使用顯式類型'(Person)'而不是'as'運算符。 – 2011-06-01 16:01:23