返回不同类型的函数(out-)参数

我正在尝试编写一个方法,该方法将字节数组作为输入,将其他几种类型作为输出变量。该方法应该能够检查“输出”参数的类型并从字节数组中读取正确的值(这部分已经可以工作)。

但我找不到一种简单的方法来获取输出参数。

这是我到目前为止所得到的(已编辑,因为缺少逗号):

在方法内部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不适用于不同类型。


倚天杖
浏览 104回答 1
1回答

尚方宝剑之说

嗯,你的问题很简单,或者我不明白。您唯一需要做的就是尽早声明返回对象,而不是在函数参数中创建它。就像这样:object[] result = new object[] { ui16, i16, ui32, i32, b }; Test(buffer, result);按照你的方式做:Test(buffer, new object[] { ui16, i16, ui32, i32, b });您只是没有机会获得结果值,因为一旦 Test 方法结束,这个新对象就会被销毁。但是,当您将其作为对先前创建的对象的引用传递时,一切都会按预期进行。
打开App,查看更多内容
随时随地看视频慕课网APP