在上一个问题中,我询问了主题标题错误消息,答案几乎是显而易见的。
然而,那个“归结”的例子来自一些没有被稀释的代码,现在我的新肉汤中再次出现了原来的问题。
我怀疑我可能会对很多‘有趣’的评论敞开心扉,但是嘿……没有愚蠢的问题,只有愚蠢的程序员!”
无论如何,这里是原始代码的一个稍微简化的版本:
public partial class Form1 : Form
{
public static Form1 mForm = new Form1();
// define textbox parameter structure
struct ParmStruct
{
public TextBox sTextBoxName;
public double dMinValue;
public double dMaxValue;
public ParmStruct(TextBox sTextBoxName, double dMinValue, double dMaxValue)
{
this.sTextBoxName = sTextBoxName;
this.dMinValue = dMinValue;
this.dMaxValue = dMaxValue;
}
}
// Create list of Parameters (name, min, max)
static ParmStruct[] ParmList = new ParmStruct[]
{
new ParmStruct { sTextBoxName = mForm.textBox1, dMinValue = -99, dMaxValue = 99 },
new ParmStruct { sTextBoxName = textBox2, dMinValue = 0, dMaxValue = 100 }
};
public Form1()
{
InitializeComponent();
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox tb1;
tb1 = mForm.textBox1;
tb1 = textBox2;
double x = ParmList[0].dMaxValue;
}
}
ParmList 初始化的第二行(sTextBoxName = textBox2)
不会编译,除非我做sTextBoxName = mForm.textBox2.
但是,该行将tb1 = textBox2
编译,并且不需要 mForm。字首。
这是最初引起混乱的实际情况(就我而言,仍然如此)。
不太确定为什么编译器(VS 2010)可以在一种情况下解决它,而在另一种情况下却不能。
哦......并且代码在编译时确实有效。:)