將基於Nullable的型別轉換實現在擴充套件方法中

2021-09-25 23:42:11 字數 1033 閱讀 1976

從上面的介紹我們可以得出這樣的結論:如果型別t1和t2能夠相互相容,我們可以借助convert將t1型別物件轉換成t2型別,然後通過顯式型別轉換進一步轉換成nullable。我們可以通過這兩個步驟實現針對於nullable型別的轉換。為了操作方便,我將此轉換邏輯寫在針對iconvertible介面的擴充套件方法中:

2:
9:         return (t?)convert.changetype(convertiblevalue, typeof(t));
10:     }
11: }

借助於上面這個擴充套件方法convertto,對於目標型別為nullable的轉換就顯得很簡單了:

1: int? intvalue           = "123".convertto();
2: double? doublevalue     = "123".convertto();
3: datetime? datetimevalue = "1981-08-24".convertto();

上面定義的擴充套件方法只能完成針對目標型別為nullable的轉換。現在我們來進一步完善它,讓這個方法可以實現任意型別之間的轉換。下面是我們新版本的convertto方法的定義:

1: public static t convertto(this iconvertible convertiblevalue)
2:
7:
8:     if (!typeof(t).isgenerictype)
9:
12:     else
13:
19:     }
20:     throw new invalidcastexception(string.format("invalid cast from type \"\" to type \"\".", convertiblevalue.gettype().fullname, typeof(t).fullname));

如何將String轉Date型別

先建立乙個日期格式化類 dateformat 然後從前端獲取使用者運算元據產生的建立時間,最後通過 dateformat 例項化物件的parse 方法將string型別轉換成date型別。string轉date dateformat dateformat new dateformat yyyy mm...

C 強制型別轉換 將3 3轉換為整型輸出

在c 的表示式中,不同的資料型別會自動地轉換型別進行運算,但有的時候也需要程式設計師自己進行強制型別轉換,將某個表示式轉換成自己所需要的資料型別。強制型別轉換的一般形式為 型別名 表示式 如果進行強制型別轉換的物件是乙個變數,則該變數的括號可以省略 如果要進行強制轉換的物件是乙個包含多項的表示式,則...

基於PHP的漢語轉拼音類

網上的眾多php漢字轉拼音方法多數並不好用,或者支援字數太少,或者不相容utf8編碼。這裡提供乙個比較完美的php漢字轉拼音類。使用方法 php 引用漢字轉拼音檔案 require once utf8pinyin.php 生成商品名稱的拼音縮寫 pinyin py str2py post 商品名稱 ...