1、它們解決什麼問題?
考慮下面的需求,Person類有個欄位age。我想使用Person p = (Person) 18 來建立一個age為18的Person物件,怎麼辦?
更進一步,我想使用Person p = 18 來建立一個age為18的Person物件,怎麼辦?
2、使用explicit(顯式)和implicit(隱式)
1 class Person 2 { 3 private int age; 4 public int Age 5 { 6 get { return age; } 7 set { age = value; } 8 } 9 10 public static explicit operator Person(int age) 11 { 12 return new Person() { age = age, }; 13 } 14 15 //public static implicit operator Person(int age) 16 //{ 17 // return new Person() { age = age, }; 18 //} 19 } 20 21 class Program 22 { 23 static void Main(string[] args) 24 { 25 Person p = (Person)18; // 呼叫explicit 26 //Person p = 18; // 呼叫implicit 27 } 28 }
注意:二者不同同時提供,否則編譯錯誤。這種語法其實是借鑑了C++的方式,並進行了擴充套件。一般情況下,不要使用這種型別轉換,因為不直觀。