Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过ref将参数传递给成员变量? 。C#中的所有类都是引用类型,这意味着将自动作为引用传递,您不必为此做任何事情。要重新迭代:1)它不能神奇地变为null。有件重要的事你没能告诉我们。2) 最好的办法是,如果你能用一个Can-you-show方法更新你的帖子,在那里你可以调用构造函数?_C#_Parameters_Ref - Fatal编程技术网

如何通过ref将参数传递给成员变量? 。C#中的所有类都是引用类型,这意味着将自动作为引用传递,您不必为此做任何事情。要重新迭代:1)它不能神奇地变为null。有件重要的事你没能告诉我们。2) 最好的办法是,如果你能用一个Can-you-show方法更新你的帖子,在那里你可以调用构造函数?

如何通过ref将参数传递给成员变量? 。C#中的所有类都是引用类型,这意味着将自动作为引用传递,您不必为此做任何事情。要重新迭代:1)它不能神奇地变为null。有件重要的事你没能告诉我们。2) 最好的办法是,如果你能用一个Can-you-show方法更新你的帖子,在那里你可以调用构造函数?,c#,parameters,ref,C#,Parameters,Ref,我有一个类(EColour),我使用所示的构造函数创建它 我将cellTemplate的引用分配(或至少尝试分配)给变量m_template 在调试中,在构建时,m_模板绝对不是空的 然而,当我开始处理OnMouseClick事件时,我得到了一个null异常错误,因为m_模板神奇地变成了null 谁能告诉我我做错了什么,以及如何纠正它 public EColour(ref ICellTemplate cellTemplate) { m_template = (ColourTemplate

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

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

在调试中,在构建时,m_模板绝对不是空的

然而,当我开始处理OnMouseClick事件时,我得到了一个null异常错误,因为m_模板神奇地变成了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
是一个参考类。所以你们需要的是——把它作为一个正则变量发送到参数中

public class EColour
{
    private ColourTemplate m_tamplate;

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

这需要一段时间来看看发生了什么。它肯定是同一个物体吗?没有任何东西会触及其他地方的变量?为什么变量
ref
仍然存在?它不能神奇地变为null。也许您正在查看您的类的不同实例?也就是说,您不需要
ref
关键字,它不做您认为它做的事情。你只应该在C++中使用它,因为C++中你需要一个双指针<代码>类型名称**/COD>。C#中的所有类都是引用类型,这意味着将自动作为引用传递,您不必为此做任何事情。要重新迭代:1)它不能神奇地变为null。有件重要的事你没能告诉我们。2) 最好的办法是,如果你能用一个Can-you-show方法更新你的帖子,在那里你可以调用构造函数?