自定義類型轉換
阿新 • • 發佈:2018-03-08
args main class ati this exceptio 自定義類型 測試 blog
這裏說點平常不怎麽用的知識(也不建議在項目中運行,因為增加閱讀代碼成本)。自定義類型轉換,有兩類型:一是類型間隱式轉換,一是類型間強制轉換。
定義格式:
訪問修飾符 static 轉換修飾操作符 operator 類型(參數列表);
轉換修飾操作符:
explicit
用於聲明必須強制轉換的自定義類型轉換操作符
implicit
用於聲明隱式的自定義類型轉換操作符
註意隱式轉換由系統自行調用,因此不建議再隱式轉換中拋出任何異常。
下面看一個簡單的小栗子:class MyAge { public int Age { get; set; } public MyAge() { } private MyAge(int age) { this.Age = age; } // int到MyAge的隱式轉換 public static implicit operator MyAge(int year) { return new MyAge(year > 1980 ? (year - 1980) : -1); } // MyAge到int的顯示轉換 public static explicit operator int(MyAge age) { if(age == null) { throw new ArgumentNullException("參數為空"); } return age.Age; } }
調用測試:
static void Main(string[] args) { int year = 2008; //隱式轉換 MyAge myAge = year; //顯示轉換 int age = (int)myAge; Console.WriteLine(age); Console.ReadKey(); }
自定義類型轉換