在初始化后的事件定义中,为什么我会收到错误 18 使用未分配的局部变量 'beforeEvntDrawArg'
in event definition after init, why am I getting Error 18 Use of unassigned local variable 'beforeEvntDrawArg'
我有一个事件对象...
public class BeforeEvntDrawArgs
{
/// <summary>
/// Event html.
/// </summary>
internal string InnerHTML
{
get
{
return this.Html;
}
set
{
this.Html = value;
}
}
/// <summary>
/// Event tags, using Data TagFields.
/// </summary>
public Gamex.TagCollection Tag
{
get;
private set;
}
/// <summary>
/// Event text.
/// </summary>
public string Text
{
get;
private set;
}
/// <summary>
/// Event Clue.
/// </summary>
public string HoverOver
{
get;
set;
}
internal BeforeEvntDrawArgs(Event e, string[] fields)
{
this.Id = e.Id;
this.Text = e.Text;
if (e.Tags != null)
{
this.Tag = new Gamex.TagCollection(fields, new List<string>(e.Tags));
}
}
}
在尝试冒泡事件并复制详细信息时,我收到错误 18 使用未分配的局部变量 'beforeEntDrawArg'
如果我分配 null BeforeEvntDrawArgs beforeEvntDrawArg = null;
,那么它编译得很好,因为应用程序会爆炸说 null ref
。不确定我做错了什么,你能帮我更正这段代码吗?
但是在事件主体中,当我复制和初始化时,我做错了什么,为什么我在编译时得到一个未初始化的,如果我使用 null,为什么它会在运行?请让我知道如何解决这个问题..
private BeforeEvntDrawArgs DoBeforeEvntDraw(Event e)
{
// Issue begins here, and pre-initializing to null compiles,
// however breaks on runtime as a null ref
BeforeEvntDrawArgs beforeEvntDrawArg = new BeforeEvntDrawArgs(e, this.TagFields)
{
HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text),
InnerHtml = Encoder.HtmlEncode(beforeEvntDrawArg.Text)
};
this.OnBeforeEvntDraw(beforeEvntDrawArg);
return beforeEvntDrawArg;
}
错误 18 使用未分配的局部变量 'beforeEvntDrawArg'
您正试图在它自己的对象初始值设定项中使用 beforeEvntDrawArg。这不受支持。 https://msdn.microsoft.com/en-us/library/bb397680.aspx
试试这个。只是没有对象初始化语法,完全一样。
BeforeEvntDrawArgs beforeEvntDrawArg = new BeforeEvntDrawArgs(e, this.TagFields)
beforeEvntDrawArg.HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text);
beforeEvntDrawArg.InnerHtml = Encoder.HtmlEncode(beforeEvntDrawArg.Text);
我在你发布的 class 中没有看到任何地方(BeforeEvntDrawArgs
) 带有两个参数的构造函数的定义。这意味着唯一可用的构造函数将是默认的无参数构造函数。因此,当您尝试执行
HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text)
beforeEvntDrawArg.Text 尚未被赋值。
我有一个事件对象...
public class BeforeEvntDrawArgs
{
/// <summary>
/// Event html.
/// </summary>
internal string InnerHTML
{
get
{
return this.Html;
}
set
{
this.Html = value;
}
}
/// <summary>
/// Event tags, using Data TagFields.
/// </summary>
public Gamex.TagCollection Tag
{
get;
private set;
}
/// <summary>
/// Event text.
/// </summary>
public string Text
{
get;
private set;
}
/// <summary>
/// Event Clue.
/// </summary>
public string HoverOver
{
get;
set;
}
internal BeforeEvntDrawArgs(Event e, string[] fields)
{
this.Id = e.Id;
this.Text = e.Text;
if (e.Tags != null)
{
this.Tag = new Gamex.TagCollection(fields, new List<string>(e.Tags));
}
}
}
在尝试冒泡事件并复制详细信息时,我收到错误 18 使用未分配的局部变量 'beforeEntDrawArg'
如果我分配 null BeforeEvntDrawArgs beforeEvntDrawArg = null;
,那么它编译得很好,因为应用程序会爆炸说 null ref
。不确定我做错了什么,你能帮我更正这段代码吗?
但是在事件主体中,当我复制和初始化时,我做错了什么,为什么我在编译时得到一个未初始化的,如果我使用 null,为什么它会在运行?请让我知道如何解决这个问题..
private BeforeEvntDrawArgs DoBeforeEvntDraw(Event e)
{
// Issue begins here, and pre-initializing to null compiles,
// however breaks on runtime as a null ref
BeforeEvntDrawArgs beforeEvntDrawArg = new BeforeEvntDrawArgs(e, this.TagFields)
{
HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text),
InnerHtml = Encoder.HtmlEncode(beforeEvntDrawArg.Text)
};
this.OnBeforeEvntDraw(beforeEvntDrawArg);
return beforeEvntDrawArg;
}
错误 18 使用未分配的局部变量 'beforeEvntDrawArg'
您正试图在它自己的对象初始值设定项中使用 beforeEvntDrawArg。这不受支持。 https://msdn.microsoft.com/en-us/library/bb397680.aspx
试试这个。只是没有对象初始化语法,完全一样。
BeforeEvntDrawArgs beforeEvntDrawArg = new BeforeEvntDrawArgs(e, this.TagFields)
beforeEvntDrawArg.HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text);
beforeEvntDrawArg.InnerHtml = Encoder.HtmlEncode(beforeEvntDrawArg.Text);
我在你发布的 class 中没有看到任何地方(BeforeEvntDrawArgs ) 带有两个参数的构造函数的定义。这意味着唯一可用的构造函数将是默认的无参数构造函数。因此,当您尝试执行
HoverOver = Encoder.HtmlEncode(beforeEvntDrawArg.Text)
beforeEvntDrawArg.Text 尚未被赋值。