![](/img/trans.png)
[英]How do I create a Span<T> of length 1 over a single variable (field or ref parameter) of type T
[英]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.