相关疑难解决方法(0)

In和Out属性如何在.NET中运行?

我一直在尝试AppDomain使用以下代码跨越边界序列化数组:

public int Read(byte[] buffer, int offset, int count)
{
    return base.Read(buffer, offset, count);
}
Run Code Online (Sandbox Code Playgroud)

作为一个猜测,在注意到其他地方的属性之后,我用方法[In][Out]属性标记了方法的参数,这似乎导致参数的行为就好像它们是通过引用传递的一样.

例如:

public int Read([In, Out] byte[] buffer, int offset, int count)
{
    return base.Read(buffer, offset, count);
}
Run Code Online (Sandbox Code Playgroud)

在添加属性之前,buffer从方法跨越AppDomain边界返回后,变量的内容会丢失.

class(SslStream)继承自MarshalByRefObject但未标记Serializable属性.这是使参数按值传递的唯一方法吗?在序列化类时,这些属性是否被.NET以某种方式识别?它们是否真的导致参数通过引用传递,或者内容是否被复制?

c# parameters serialization attributes marshalbyrefobject

10
推荐指数
1
解决办法
1988
查看次数

C#中的参数

当我想在C#中获取内存总值时,我在MSDN中找到了一个kernel32函数来调用系统中的数据.MSDN以这种方式声明函数:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);
Run Code Online (Sandbox Code Playgroud)

但这不能正常工作.我将"ref"改为"[In,Out]"然后它正常工作.怎么能告诉我C#中的[In,Out]参数是什么?

c# out-parameters

0
推荐指数
1
解决办法
4506
查看次数