亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

返回不同類型的函數(out-)參數

返回不同類型的函數(out-)參數

C#
倚天杖 2023-09-09 17:10:36
我正在嘗試編寫一個方法,該方法將字節數組作為輸入,將其他幾種類型作為輸出變量。該方法應該能夠檢查“輸出”參數的類型并從字節數組中讀取正確的值(這部分已經可以工作)。但我找不到一種簡單的方法來獲取輸出參數。這是我到目前為止所得到的(已編輯,因為缺少逗號):在方法內部Test,args參數具有正確的值,但它們自然永遠不會到達其相應的簡單變量ui16、i16等等......當我將簽名更改為public static object[] Test(byte[] daten, object[] args);然后return args;在函數結束時,我在函數外部獲取值,但它們在 內部object[],并且我仍然需要在 中編寫類似的內容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];作為引用參數傳遞args是可行的,但是我必須聲明另一個變量而不是傳遞new object[] { ui16, i16, ui32, i32, b }我想,我需要參數和輸出的混合:public static void Test(byte[] daten, params out ui16, out i16, out ui32);但params不適用于不同類型。
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

嗯,你的問題很簡單,或者我不明白。您唯一需要做的就是盡早聲明返回對象,而不是在函數參數中創建它。就像這樣:

object[] result = new object[] { ui16, i16, ui32, i32, b };
Test(buffer, result);

按照你的方式做:

Test(buffer, new object[] { ui16, i16, ui32, i32, b });

您只是沒有機會獲得結果值,因為一旦 Test 方法結束,這個新對象就會被銷毀。但是,當您將其作為對先前創建的對象的引用傳遞時,一切都會按預期進行。


查看完整回答
反對 回復 2023-09-09
  • 1 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號