我有一個類,主要是一個大陣列和一些相關的家務包裝。我有一個函數,它需要一個ref參數。當我將該類的一個實例傳遞給該函數時,我想要發送該數組。傳遞一個明確的演員作爲參考參數(C#)
我認爲明確的演員。假設我有一些具有byte [] ref參數的函數。
public void SomeFunction(ref byte[] someBytes);
而且我有一些重載顯式類型轉換的類。
class SomeClass
{
byte[] someBytes;
public static explicit operator byte[](SomeClass someInstance)
{
return someInstance.someBytes;
}
}
現在,我要打電話與類的函數作爲參數
SomeClass someInstance = new SomeClass();
SomeFunction(ref (byte[]) someInstance);
編譯器會抱怨「ref或out參數必須是可分配的變量」。我不確定我是否沒有正確地按摩編譯器,或者如果你真的無法做到這一點。
我認爲屬性或函數的返回值,但你不能傳遞那些由REF(和教育自己後,我明白爲什麼...)
我不想讓陣列公共領域,但確實符合編譯器的要求。 我想我可以創造一個局部變量來引用與陣列,但是這是一個額外的代碼行前,每個函數調用後...
編輯:它可能是值得注意的是,SomeFunction被寫了第三方,我無權改變它。更糟的是,我認爲他們的參數實際上不需要參考...
所以事實證明,切實可行的解決辦法要麼是公共領域或短的方法,其唯一目的是爲了掩蓋一些局部變量的創建來傳遞。我做了一些更多的挖掘和仿製藥可能有幫助也是。 – ajs410 2010-02-01 14:45:48
對,一個簡單的setter就足以更新someInstance。作爲替代,您可以創建一個SomeFunction作爲參數的接口,SomeInstance實現並通過該接口實現您的邏輯。 – 2010-02-01 15:31:26