我正在嘗試編寫一個方法,該方法將字節(jié)數(shù)組作為輸入,將其他幾種類型作為輸出變量。該方法應該能夠檢查“輸出”參數(shù)的類型并從字節(jié)數(shù)組中讀取正確的值(這部分已經(jīng)可以工作)。但我找不到一種簡單的方法來獲取輸出參數(shù)。這是我到目前為止所得到的(已編輯,因為缺少逗號):在方法內(nèi)部Test,args參數(shù)具有正確的值,但它們自然永遠不會到達其相應的簡單變量ui16、i16等等......當我將簽名更改為public static object[] Test(byte[] daten, object[] args);然后return args;在函數(shù)結(jié)束時,我在函數(shù)外部獲取值,但它們在 內(nèi)部object[],并且我仍然需要在 中編寫類似的內(nèi)容main:object[] o = Test(buffer, new object[] { ui16, i16, ui32, i32, b });ui16 = (UInt16) o[0];i16 = (Int16) o[1];ui32 = (UInt32) o[2];i32 = (Int32) o[3];作為引用參數(shù)傳遞args是可行的,但是我必須聲明另一個變量而不是傳遞new object[] { ui16, i16, ui32, i32, b }我想,我需要參數(shù)和輸出的混合:public static void Test(byte[] daten, params out ui16, out i16, out ui32);但params不適用于不同類型。
1 回答

尚方寶劍之說
TA貢獻1788條經(jīng)驗 獲得超4個贊
嗯,你的問題很簡單,或者我不明白。您唯一需要做的就是盡早聲明返回對象,而不是在函數(shù)參數(shù)中創(chuàng)建它。就像這樣:
object[] result = new object[] { ui16, i16, ui32, i32, b }; Test(buffer, result);
按照你的方式做:
Test(buffer, new object[] { ui16, i16, ui32, i32, b });
您只是沒有機會獲得結(jié)果值,因為一旦 Test 方法結(jié)束,這個新對象就會被銷毀。但是,當您將其作為對先前創(chuàng)建的對象的引用傳遞時,一切都會按預期進行。
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消