写了一个c#程序,其目的是根据鼠标点form的事件发生的次数决定赋值,即第一次传来一个值,第二次传来一个值
计算两个值的差
程序如下:
bool ClickNumber = true;
psspd (Event,..) //这是事件处理程序,详细就略去了
{
float a,b,result;
if (ClickNumber)
{
a = e.x;//这里接受点击传来一个值
ClickNumber = false;
}
else
{
b = e.x;
result = b -a;
ClickNumber = true;
}
}
第一次编译后,告诉我“未赋值的局部变量”,因此将上面改成了
float a = 0, b = 0, result = 0;
此时可以通过,但result不等于b-a,而是等于b,经过调试跟踪发现是这样的:
第一次点了form后,进入if中,给a赋值成功,比如为10.0;
第二次点form后,进入else中,此时给b赋值为30.0,都对,
可是此时a成为0.0了而不是刚才的10.0了,直接造成结果result不对了,请问这样为什么
计算两个值的差
程序如下:
bool ClickNumber = true;
psspd (Event,..) //这是事件处理程序,详细就略去了
{
float a,b,result;
if (ClickNumber)
{
a = e.x;//这里接受点击传来一个值
ClickNumber = false;
}
else
{
b = e.x;
result = b -a;
ClickNumber = true;
}
}
第一次编译后,告诉我“未赋值的局部变量”,因此将上面改成了
float a = 0, b = 0, result = 0;
此时可以通过,但result不等于b-a,而是等于b,经过调试跟踪发现是这样的:
第一次点了form后,进入if中,给a赋值成功,比如为10.0;
第二次点form后,进入else中,此时给b赋值为30.0,都对,
可是此时a成为0.0了而不是刚才的10.0了,直接造成结果result不对了,请问这样为什么
局部变量必须先赋初值。。不然C#编译器会提示出错的
C#中局部变量必须赋初值。不然提示出错
全局变量不需要
你会发现每次点form后都会执行
因为这是局部变量在form的代码部分生命静态成员吧
public partial class Form1 : Form
{
static float a = 0;
static float b = 0; public Form1()
{
InitializeComponent();
}
略还是不太理解你的需求,肯定有些没说全吧