C# ref或out参数必须是可赋值变量?

C# ref或out参数必须是可赋值变量?,c#,windows,winforms,ref,C#,Windows,Winforms,Ref,错误: ref或out参数必须是可赋值变量 代码: 它显示了错误 this.WndProc(参考新消息() 这个错误解释得很清楚。你需要一个可赋值的变量 protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); var message = new Message() { HWnd = this.Handle, Msg = 4150,

错误:

ref或out参数必须是可赋值变量

代码:

它显示了错误

this.WndProc(参考新消息()


这个错误解释得很清楚。你需要一个可赋值的变量

protected override void OnHandleCreated(EventArgs e)
{
    base.OnHandleCreated(e);
    var message = new Message()
    {
        HWnd = this.Handle,
        Msg = 4150,
        LParam = (IntPtr)43,
        WParam = IntPtr.Zero
    };
    this.WndProc(ref message);
}

这个错误解释得很清楚。你需要一个可赋值的变量

protected override void OnHandleCreated(EventArgs e)
{
    base.OnHandleCreated(e);
    var message = new Message()
    {
        HWnd = this.Handle,
        Msg = 4150,
        LParam = (IntPtr)43,
        WParam = IntPtr.Zero
    };
    this.WndProc(ref message);
}

ref参数不是可赋值变量。创建
消息
类的新实例和作为引用传递不应同时进行。调用方法应填充内存中的某个位置。调用中没有此类内容。这将编译:

var message = new Message()
{
    HWnd = this.Handle,
    Msg = 4150,
    LParam = (IntPtr)43,
    WParam = IntPtr.Zero
});

this.WndProc(ref message);

ref参数不是可赋值变量。创建
消息
类的新实例和作为引用传递不应同时进行。调用方法应填充内存中的某个位置。调用中没有此类内容。这将编译:

var message = new Message()
{
    HWnd = this.Handle,
    Msg = 4150,
    LParam = (IntPtr)43,
    WParam = IntPtr.Zero
});

this.WndProc(ref message);

是的。如果您像这样传递,则该方法不会更改任何内容!我如何解决此问题?创建消息()对象,然后将其发送给WndProc。@Dolubolu您可以将其分配给变量,但这可能是错误的。如果该方法采用
ref
参数,它会更改它-它说:如果您编写了该方法-修复它!如果否,请检查文档-可能您错了…是的。如果您这样传递,该方法将不会更改任何内容!我如何解决验证这个?首先创建一个Message()对象,然后将其发送给WndProc。@Dolubolu您可以将其分配给一个变量,但这可能是错误的。如果该方法使用
ref
参数,它会更改它-它说:如果您编写了该方法-修复它!如果没有,请检查文档-可能是您错了。。。