C#重載概念中的返回值數據類型問題


這是個困擾新手的問題,這個問題我經常都想一想,今天終於抽出時間在VS上進行了驗證。

之前也在網上查過好多次,對於返回值數據類型不同,而參數簽名(個數,順序,類型)相同及不同的情況下,究竟是否構成重載呢?

首先,我要明確一點,怎樣印證是否構成重載?

我們在用VS智能提示的時候,如果某方法有重載,那么在調用它的時候,提示信息中會顯示它的重載個數,我就通過這個方法來印證,

如果我的測試方法構成重載,那么就能在智能提示中出現。

有的書上就簡單地一寫,重載與返回值無關,個人感覺還是太模糊了,啥叫無關?!靠!扯再多也不如一試,誰的話也別信,信調試~

 

步驟一:最普通的重載

圖1:最傳統、最朴實、最標准、無爭議的重載。。

 

圖2:方法智能提示中可以看到“(共2個)”字樣,說明構成了響當當的重載。

 

步驟二:方法名相同,參數簽名相同

 圖3:寫一個和int f(int a)只有返回值不同的方法,F6生成時,編譯出錯,出錯提示見圖片,這個問題,網上的講解很易懂,你調用f(int a)的時候,鬼知道你想調返回值為哪個的。。可能別的高級語言彪悍到能夠支持這種定義和調用,不過C#是鐵定不行滴了。

 

圖4:編譯都通不過,更不用提構成重載鳥,啥子也表提了~

 

圖5:哥不死心,又試了試雙參數的方法,果然還是不行~我好無聊。。

 

步驟三:將一個正常重載方法的返回值類型修改,看是否仍然構成重載

圖6:先寫一個標准的三參數重載用來惡搞

 

圖7:惡搞開始,先把這個三參數重載方法的返回值從int改成string,童鞋們,注意,是改,不是再多寫一個哦,F6果斷【沒有報錯】,重載列表竟然也可以看到三個方法,我一共就定義了三個方法,不看第三個方法的提示,也知道重載成功了。

 

圖8:哥不死心,就是要往下看,第二個肯定是無爭議成功可以重載滴

 

 圖9:說了這么多廢話,真相終於揭曉!它重載了,它竟然果斷還是構成重載鳥!看見了沒?!返回值是string的第三個方法,和前兩個返回值是int的方法構成重載了耶!

也有人說,雖然語法上能通過,也能正常調用,但應認為方法3和方法1是不同的兩個方法,根本對不上重載的定義,但我覺得這種提示列表,不理解成重載實在說不過去了。。可能還有不嚴謹的地方,等以后我NB了再回來完善這個貼,目前我就這么認為了,嚯嚯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM