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++的方式,並進行了擴展。一般情況下,不要使用這種類型轉換,因為不直觀。