今天被out引數玩了一把

2021-04-06 15:52:34 字數 1124 閱讀 9556

原文見:今天被out引數玩了一把

我們經常寫這樣的**:

public

class

class2

private

void

test(base b)

}class

base

class

derive : base

class

derive1 : base

使用基類來表示乙個介面,然後傳遞子類。但是把這段**改一改:

public

class

class2

private

void

test( 

outbase b)

}class

base

class

derive : base

class

derive1 : base

按照平常的思路是沒問題的,可是連編譯都通不過。why? 是繼承體系不對?查一查,沒問題。引數型別不對?也沒問題,如果把derive d = new derive()換成base d = new base(),編譯是沒問題的。或者不使用out,編譯也沒問題。

費了老大勁,才找到關於這個問題的說明:

out要求傳入的引數型別和宣告的型別是一致的。原來的是out搞的鬼!對out引數子類到基類的轉換是用不成的,

可是如果new的是基類,那麼使用基類不就沒意義了嗎?

沒辦法,框架是人家寫的,人家用了out引數我們也不能怎麼樣,不過這個問題得搞清楚。要傳子類,還得自己想辦法,繞個道:

class

class1

static

void

test(  

outbaseclass y ,type t )

}class

baseclass

public

void

writename()

}class

deriveclass : baseclass

class

deriveclass2 : baseclass

要不是這次碰到這樣的問題,我還真不知道out引數還有這問題呢?照著平常的思路老是走不通,還道是繼承的有問題呢,還好,總算把原因搞清楚了

被HDC忽悠了一把

windows ui 程式寫得不算少了,無論是基於mfc的,還是直接用windows api 今天還是被hdc忽悠了一把,事情的經過是這樣的 hdc hdc getdc m hdrawwnd 這段 正好是一段需要經常執行的 每次狀態有所改變需要重繪時都會呼叫到。程式執行倒是蠻平穩,沒有任何異常跡象。...

被Axis2狗屎折騰了一把

被axis2狗屎折騰了一把 最近在做web service這塊,起初用的是xfire1.2.6,myeclipse開發工具支援很好,不管是客戶端和服務端只要打個war包部署上即可。但是,處於一些政治原因,xfire被叫停了,換到axis2上,研究後發現 1 axis2開發工具支援力度不夠,需要自己寫...

被肉雞了一把,感覺很酸爽。

被黑前高富帥 被黑後矮窮挫 昨天伺服器被黑客攻擊了,徹底的被黑了一把。計算機的cpu佔用率100 多個病毒程序一直活躍殺不死,網路流量也高居不下。這酸爽。該防毒的防毒該防護的防護,按程式走了一遍。病毒最終找出來了,也殺死了,系統恢復正常。但是為了防止有更隱藏的病毒沒有徹底消滅,心裡總是不踏實,為了穩...