一、方法中傳入的引數為dynamic,則返回的也是dynamic型別
例如:
publict1的型別為string test(string
str)
dynamic t = "11"
;
var t1 = test(t);
那假如我們再重構test
public結果會是一樣,"11aa",因為在執行的時候t被解析為string型別,會呼叫第乙個方法。string test(dynamic
str)
我們重新定義t變數
dynamic t = 11這個時候結果"11bb",但是返回型別仍然是dynamic,即使我們已經重構了引數為 dynamic的方法,單返回的結果仍然不是string型別,而是dynamic。;
var t1 = test(t);
二、dynamic型別無法使用本身型別的擴充套件方法。例如,上面例項返回的結果雖然是dynamic型別,然而在解析的時候會當作string型別來處理,但是,dynamic無法使用string型別的擴充套件方法。
例如:
publicstatic
bool isnotnullorempty(this
string
str)
var t2 = t.isnotnullorempty();會引發異常,string未包含isnotnullorempty()的定義。其實string是包含了isnotnullorempty() 的方法的,只是該型別為dynamic型別,在解析的時候才是string型別,這樣是不能使用擴充套件的方法的。
那麼是否可以為dynamic寫乙個擴充套件方法,實現上述功能呢,其實也不行。dynamic型別暫時不支援擴充套件方法。
當然僅僅只要實現功能可以自定義乙個方法。
public雖然dynamic無法使用本來型別的擴充套件方法,但是可以使用自帶的方法。static
bool isnotnullorempty(dynamic
dyn)
var t2 =t.replace('結果如下,同理一,自帶方法的返回結果仍然是dynamic型別。如果明確型別的,可以自己強型別轉換一下就好了。1', '
2');
總結:
1. 對於沒有對結果進行型別轉換的方法,如果引數傳的dynamic型別,那麼結果也是dynamic型別,不管你是否定義了dynamic的返回型別和傳入引數。
2. dynamic無法使用本身型別的擴充套件方法。例如dynamic無法使用string的擴充套件方法。
3. dynamic可以使用本身型別的自帶方法。例如dynamic可以使用string.repalce()方法,但是vs不提供聯想,需要自己補全。
php curl擴充套件不能使用
用的php 7.1.3 curl模組無法使用 環境是是自己配的.在php.ini中,查詢extension php curl.dll 找到後把它前面的分號去掉.如圖 然後再查詢extension dir 配置它的路徑指向php curl.dll 模組對應的資料夾.再然後把libeay32.dll,s...
pdfcrop不能使用
最近,用到了pdfcrop,用來去除pdf中空白的邊。但是使用pdfcrop margins 0 pdf 後,給出了錯誤 error pdfcrop cannot call ghostscript 但是我已經安裝了ctex,裡面已經包含ghostscript,所以就不知道什麼錯誤。在網上針對這個問題...
CGRect CGFloat 不能使用
筆者還在照著別人 敲東西的階段 汗顏哪 言歸正傳,今天敲 的時候發現只要是繼承nsobject的類 都不能使用cgrect cgfloat 會報 unknown type name cgrect did you mean rect or unknown type name cgfloat 糾結了一下...