【发布时间】:2010-01-29 23:16:33
【问题描述】:
我有一个类,它主要是一个大数组的包装器和一些相关的内务管理。我有一个带有 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 是由第三方编写的,我无权更改它。更糟糕的是,我认为他们的参数实际上不需要参考...
【问题讨论】:
标签: c# casting ref-parameters