我有一个类,它主要是一个大数组和一些相关的家务的包装器。我有一个带有 ref 参数的函数。当我将类的实例传递给函数时,我希望发送数组。
我考虑了明确的演员表。假设我有一些具有 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 是由第三方编写的,我无权更改它。更糟糕的是,我认为他们的参数实际上不需要参考......