在c#中我試圖實現一種方法,我可以使用它將數據綁定到我傳給它的任何控件(當然提供的控件是從一個databoundcontrol對象)當在方法中傳遞對派生對象的引用時出錯
給出的方法
public void CTLBindData(ref DataBoundControl ctl){ ... }
我在嘗試導出的控制傳遞給功能
例如下面的代碼時的錯誤
DropDownList lister = new DropDownList();
CTLBindData(ref lister);
生成轉換錯誤
好吧,我可以接受,但下面混淆了我(可能是因爲我用C++而不是C#)
CTLBindData(ref (DataBoundControl)lister);
在這種情況下,我得到的錯誤
「A REF或out參數必須是可分配的變量」
的澄清DROPDOWNLIST從從DataBoundControl
這是沒有意義的我,我應該繼承列表控件繼承能夠傳入從數據綁定控件派生的任何對象。似乎明確的類型轉換正在導致這個問題。
任何線索,我做錯了什麼?
DC
@Andrew的答案是正確的,但是,你確定它必須通過ref?從邏輯上講,您可能會返回不同類型的不同對象。如果你不打算用CTLBindData中的新對象來分配它,那麼在傳遞它和不傳遞參數之間沒有區別。 – Elisha 2009-11-03 05:12:57
你是說c#默認爲傳遞對象作爲參考不值? 對我來說它是不合邏輯的,你可以得到一個不同的對象,除非refs比實際引用更接近指針。 – DeveloperChris 2009-11-03 05:28:31
使用'ref'可以讓不同的對象回來。如果您在我的答案中閱讀了鏈接,這說明它比我們任何人在評論中都好得多。 – 2009-11-03 05:38:21