C#中与全局变量有关的问题

来源:百度知道 编辑:UC知道 时间:2024/04/29 06:51:41
请高手们看看下面的例子。
比如我定义一个按钮,点击以后,给一个数组赋值:
private void button1_Click(object sender, EventArgs e)
{
byte[] b ={ 1, 13, 54, 23 };
}

再定义一个按钮,点击以后,利用FOR循环和消息框,显示它的值:
private void button2_Click(object sender, EventArgs e)
{
for (int i = 1; i < b.Length; i++)
{
MessageBox.Show(b[i]);
}
运行时显示:当前上下文中不存在名称“b”。
这是为什么呢?
大哥,要是能够定义b为全局变量我还问这干啥捏?要能都定义,那不是一堆全局变量啊?没有保护性了好吧。。。我是问有没有方法在第二个里调用第一个?

C#中没有全局变量的说法
你可以找了看看
对于你的这个问题
先说,下面的大哥写的那错了···
byte[] b;
b ={ 1, 13, 54, 23 };
能在声明之外的语句赋值整体赋值?!
根本不行

我想你要研究下什么是局部变量
你在点击事件内这样创建的一个数组就是局部变量
无法在改方法外使用这个变量
除非你这样
byte[] b;
private void button1_Click(object sender, EventArgs e)
{
//分别对每个元素赋值
}
似乎你还没有完全理解好面向对象的封装问题···
你还是再熟读下面向对象的具体思想吧···
一个类里访问这个类自己的变量叫什么没有保护性?不对

b不是全局变量,b只能在button1_Click方法里使用,在button2_Click不能使用,

解决办法:
定义全局的b变量:
byte[] b;

private void button1_Click(object sender, EventArgs e)
{
b ={ 1, 13, 54, 23 };
}

private void button2_Click(object sender, EventArgs e)
{
for (int i = 1; i < b.Length; i++)
{
MessageBox.Show(b[i]);
}

想在第二个方法里使用第一个方法的变量,而且还不想让变量暴露再类里面?
想实现这样 唯一的办法就是通过参数吧变量传到第二个方法里面

void A()
{
int a = 0;
B(a);
}

void B(int a)
{
//...
}