我有一个类,主要是一个大阵列和一些相关的家务包装。我有一个函数,它需要一个ref参数。当我将该类的一个实例传递给该函数时,我想要发送该数组。传递一个明确的演员作为参考参数(C#)
我认为明确的演员。假设我有一些具有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被写了第三方,我无权改变它。更糟的是,我认为他们的参数实际上不需要参考...
所以事实证明,切实可行的解决办法要么是公共领域或短的方法,其唯一目的是为了掩盖一些局部变量的创建来传递。我做了一些更多的挖掘和仿制药可能有帮助也是。 – ajs410 2010-02-01 14:45:48
对,一个简单的setter就足以更新someInstance。作为替代,您可以创建一个SomeFunction作为参数的接口,SomeInstance实现并通过该接口实现您的逻辑。 – 2010-02-01 15:31:26