有時候不得不感嘆中國的文化確實是博大精深,你稍有不慎就會誤入歧途,到最終迷茫過後,回過頭來再看,哦 ,原來是這個意思,所以說每一字每一句都得仔細斟酌,為什麼要這樣說,請看我以為的!
在控制台中寫乙個方法如下
1然後再控制台呼叫方法 console.writeline(optionparam(0, 1, 2)); 進行輸入,很顯然會告訴你錯誤:可選引數必須出現在所有必需的引數之後static
int optionparam(int a = 0, int b, intc)2
,那麼進行修改如下
1然後再呼叫方法 console.writeline(optionparam(0, 1)); 明顯會輸出1,你以為這樣這樣就可以完了嗎,你難道就不會多想一點,你這是可選引數(option parameter),如果我有個未知引數params(unknown params)兩個結合會怎樣呢??接下來**修改如下:static
int optionparam(int b, int c, int a = 0)2
1因為在該方法中c有預設值,而且我們知道我們在呼叫引數可以顯示按照我們的意願來呼叫引數,所以下面我們這樣呼叫 optionparam(0, a: 1, 2); 理論上是可以的,對嗎,我也這樣認為,結果卻是static
void optionparam(int b, int c = 0, params
int a)
2
拋開這句話,你是不是心生疑惑可選引數和params是不是在一起就是個錯誤呢?這句話我想了想應該是裡面傳了三個引數進去,編譯器認為你也指定了引數b即使你顯示指定了引數a,所以不會通過!既然這樣,a引數傳乙個是不是就對了呢,試試 optionparam(0, a: 1); 果不其然,沒有任何錯誤,執行正確!那麼問題來了,我既然用的是params引數陣列,肯定就是不確定我要傳的引數的個數啊,現在你居然完全限制只能讓我傳乙個引數進去,你鬧呢,接著想辦法,利用方法過載試試看看!**如下:
1然後再呼叫方法 optionparam(0,1,3,4,4); 這樣就巧妙的解決了問題,但是問題又來了,這樣的話 可選引數和params就不能在一起使用 !這樣就形成了乙個惡性迴圈即 連在一起使用,params引數個數受限制!通過過載,兩者又不能連在一起使用 ,當然我們回到問題的源頭,現在是不是覺得題目標題是正確的,誰說 可選引數必須位於所有引數最後 ,上面情況不是明確驗證了這點了嗎!解決了這點,出現了新的問題,那我們繼續解決,這不就是我們碼農的精神,哈哈!不要灰心,難道真的不能再一起好好的玩耍嗎,看看下面**。static
void optionparam(int b, params
int a)25
6static
void optionparam(int b, int c = 0, params
int a)
7
1同樣呼叫上述方法 optionparam(0, 1, 3, 4, 4); 結果執行完全正確,上述那是因為在可選引數之前還有必須引數,導致無法直接結合在一起使用!所以問題總歸還是有解決的辦法的,事在人為!static
void optionparam(int b = 0, params
int c)
2
歸根結底,可選引數必須位於所有引數最後,這話確確實實是錯的,但是是自己欺騙了自己,出現錯誤時,編譯器表述為:可選引數必須出現在所有必需的引數之後!是我解釋為上述標題,通過了本文你就明確知道為什麼要加必須的三個字,恰好就是為了可選引數和params非必須引數的完美邂逅擦出的火花,因此從中也能總結出一點人生道理:有些在你看來完全不起眼的地方,當你放眼長遠,也許正是這些不起眼,才造就了更好的自己!
可選引數必須出現在所有必需的引數之後
params引數必須出現在所有引數之後
假如生活欺騙了你
假如生活欺騙了你 普希金 if by life you were deceived,don t be dismal,don t be wild in the day of grief,be mild merry days will come,believe.heart is living in to...
你也被to date 函式欺騙了嗎?
我們可以用to date函式來構造自己想要的任何時間。當省略了hh,mi,ss時,oracle預設置為0,即 取整到日。當省略了dd時,oracle預設置為1,即 取整到月。當省略了mm時,oracle會取整到年嗎?我們都會慣性的認為 會。然,非也!oracle不會取整到年,他會取整到當前月!下面我...
你也被to date 函式欺騙了嗎?
我們可以用to date函式來構造自己想要的任何時間。當省略了hh,mi,ss時,oracle預設置為0,即 取整到日。當省略了dd時,oracle預設置為1,即 取整到月。當省略了mm時,oracle會取整到年嗎?我們都會慣性的認為 會。然,非也!oracle不會取整到年,他會取整到當前月!下面我...