C# 4.0 为什么我能';t使用;这一点;在这里
我不明白为什么这段代码是错误的,我只想在字典中封装空格C# 4.0 为什么我能';t使用;这一点;在这里,c#-4.0,dictionary,C# 4.0,Dictionary,我不明白为什么这段代码是错误的,我只想在字典中封装空格 private delegate void LotIs(string path); private Dictionary<int, LotIs> lots = new Dictionary<int, LotIs> { {0, this.LotIsBanHummer}, {1, this.LotIsDuck}, {2, this.LotIsToy
private delegate void LotIs(string path);
private Dictionary<int, LotIs> lots = new Dictionary<int, LotIs>
{
{0, this.LotIsBanHummer},
{1, this.LotIsDuck},
{2, this.LotIsToy},
{3, this.LotIsDragon},
{4, this.LotIsMoney}
};
private void LotIsBanHummer(string path)
{
lotImage.Image = LB10_VAR7.Properties.Resources.banhammer2;
StreamReader str = new StreamReader(path + "BunHummer.txt");
textBox1.Text = str.ReadToEnd();
textBox3.AppendText(textBox1.Lines[1].Split(' ')[1]);
}
private-delegate-void-LotIs(字符串路径);
私人词典批量=新词典
{
{0,这是LotIsBanHummer},
{1,这个。洛蒂斯杜克},
{2,这是洛蒂斯泰},
{3,这是洛蒂斯德拉贡},
{4,这是洛蒂斯莫尼}
};
私有void LotIsBanHummer(字符串路径)
{
lotImage.Image=LB10_VAR7.Properties.Resources.banhammer2;
StreamReader str=新的StreamReader(路径+“bunhumer.txt”);
textBox1.Text=str.ReadToEnd();
textBox3.AppendText(textBox1.Lines[1]。拆分(“”)[1]);
}
在构造函数中使用这个
来定义字典
像这样:
private Dictionary<int, LotIs> lots = new Dictionary<int, LotIs>();
public YourClass() {
lots[0] = this.LotIsBanHummer;
lots[1] = this.LotIsDuck;
lots[2] = this.LotIsToy;
lots[3] = this.LotIsDragon;
lots[4] = this.LotIsMoney;
}
private Dictionary lots=new Dictionary();
公共课{
lots[0]=这个LotIsBanHummer;
第[1]批=本。洛蒂斯杜克;
第[2]批=这个。洛蒂斯泰;
第[3]批=这个;
lots[4]=这个LotIsMoney;
}
如果定义了
LotIsBanHummer
,LotIsDuck
等static
,那么您可以在没有this
的情况下进行初始化在构造函数中使用this
来定义字典
像这样:
private Dictionary<int, LotIs> lots = new Dictionary<int, LotIs>();
public YourClass() {
lots[0] = this.LotIsBanHummer;
lots[1] = this.LotIsDuck;
lots[2] = this.LotIsToy;
lots[3] = this.LotIsDragon;
lots[4] = this.LotIsMoney;
}
private Dictionary lots=new Dictionary();
公共课{
lots[0]=这个LotIsBanHummer;
第[1]批=本。洛蒂斯杜克;
第[2]批=这个。洛蒂斯泰;
第[3]批=这个;
lots[4]=这个LotIsMoney;
}
如果定义了
LotIsBanHummer
,LotIsDuck
等static
,则可以在不使用this
的情况下进行初始化,编译器不允许在此类初始化表达式中使用this
,因为在计算表达式时假定this
未初始化。请记住,这些表达式是在执行任何构造函数之前计算的
在构造函数中,允许在任何时候使用此函数,即使某些字段可能尚未初始化,但您有责任不访问任何未初始化的成员
因此,在您的情况下,解决方案是初始化字典/在构造函数中添加初始内容(或者,在多个构造函数的情况下,在每个构造函数调用的方法中).编译器不允许您在这样的初始值设定项表达式中使用
this
,因为计算表达式时假定this
未初始化。请记住,这些表达式是在执行任何构造函数之前计算的
在构造函数中,允许在任何时候使用此函数,即使某些字段可能尚未初始化,但您有责任不访问任何未初始化的成员
因此,在您的情况下,解决方案是初始化字典/在构造函数中添加初始内容(或者,在多个构造函数的情况下,在每个构造函数调用的方法中添加初始内容)。来自C#规范:
17.4.5.2
实例字段初始化
实例字段的变量初始值设定项不能引用
正在创建的实例。因此,引用是编译时错误
这是变量初始值设定项中的
,因为它是
变量初始值设定项,通过
简单名称
但是,您可以将初始化器移动到构造函数 来自C#规范:
17.4.5.2
实例字段初始化
实例字段的变量初始值设定项不能引用
正在创建的实例。因此,引用是编译时错误
这是变量初始值设定项中的
,因为它是
变量初始值设定项,通过
简单名称
但是,您可以将初始化器移动到构造函数 为了澄清你的文本,请注意,没有“空白”这样的东西。您所指的可以称为函数、方法或例程,但当您指的是没有返回值的方法时,提到“无效”是不正确的,正如返回
int
值的方法不是“一个int”。为了澄清您的文本,请注意,没有“无效”这样的东西。您所指的可以称为函数、方法或例程,但在指没有返回值的方法时说“无效”是不正确的,正如返回int
值的方法不是“int”。