繁体   English   中英

如何通过 ref 将参数传递给成员变量?

[英]How do I pass a parameter by ref to a member variable?

C# 很新,从很久以前的 C++ 背景开始,所以我似乎很难从指针过渡到 C# 中的 ref。

我有一个 class (EColour),它是我使用所示的构造函数创建的。

我将对 cellTemplate 的引用分配(或至少尝试分配)给变量 m_template。

查看调试,在构造时,m_template 绝对不是 null。

然而,当我开始处理 OnMouseClick 事件时,我得到了 null 异常错误,因为 m_template 神奇地变成了 null。

谁能阐明我做错了什么以及如何解决?

public EColour(ref ICellTemplate cellTemplate)
{
    m_template = (ColourTemplate)cellTemplate;
}

protected override void OnMouseClick(DataGridViewCellMouseEventArgs e)
{
    ColorDialog dlg = new ColorDialog();
    dlg.AnyColor = m_template.AnyColour; // This throws an exception because m_template is null
    
    base.OnMouseClick(e);
}

ColourTemplate m_template;

在C#中我们主要有两种类型:

value type - its all digit types (int, float, double, long ...)
reference type -its types that inherited from object

ICellTemplate是参考 class。所以您需要的是 - 只需将其作为常规变量发送到参数中即可。

public class EColour
{
    private ColourTemplate m_tamplate;

    public EColour(ICellTemplate cellTemplate)
    {
        m_template = (ColourTemplate)cellTemplate;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM