我有一个类,主要是大阵列的包装和一些相关的内务处理.我有一个带参数的函数.当我将类的实例传递给函数时,我希望数组被发送.
我考虑过明确的演员表.假设我有一些具有byte [] ref参数的函数.
public void SomeFunction(ref byte[] someBytes);
Run Code Online (Sandbox Code Playgroud)
而且我有一些带有重载显式转换的类.
class SomeClass
{
byte[] someBytes;
public static explicit operator byte[](SomeClass someInstance)
{
return someInstance.someBytes;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想以类作为参数调用该函数
SomeClass someInstance = new SomeClass();
SomeFunction(ref (byte[]) someInstance);
Run Code Online (Sandbox Code Playgroud)
编译器抱怨"ref或out参数必须是可赋值变量".我不确定我是不是没有正确地按摩编译器,或者你真的不能这样做.
我考虑了属性或函数返回值,但你不能通过ref传递那些(并且在自我教育之后我明白为什么......)
我不想让数组成为公共字段,但这确实满足了编译器.我想我可以创建一个局部变量来引用数组,但这是在每个函数调用之前和之后的额外代码行...
编辑:可能值得注意的是SomeFunction是由第三方编写的,我无权更改它.更糟糕的是,我不认为他们的参数实际上需要参考...
所以前几天我的C#应用程序崩溃了.通常,对于.NET应用程序,如果您有未处理的异常,则会收到带有堆栈跟踪的错误消息.
但是,这一次,我得到了一个不同的对话框,告诉我有一个错误,并提供附加调试器,但对话框中没有堆栈跟踪,并且它运行的机器没有安装调试器.
是什么赋予了?为什么我看不到默认的.NET异常处理程序?