在C#代码中看不到变量

时间:2013-05-31 14:10:49

标签: c# variables scope

学习C#并遇到障碍。

为什么这里不使用变量'number'?

    public partial class Form1 : Form
    {

    static string labelText = "";
    static string number = "";

    public Form1()                                  
    {
        InitializeComponent();
    }

    private void serialNumber_TextChanged(object sender, EventArgs e)
    {
        string number = this.serialNumber.Text;
    }

我一直收到警告,指出字段“号码”已分配但未使用。

7 个答案:

答案 0 :(得分:3)

string number = this.serialNumber.Text;此行创建一个新字符串。

尝试此操作以避免警告

  

公共部分类Form1:表单       {

static string labelText = "";
static string number = "";

public Form1()                                  
{
    InitializeComponent();
}

private void serialNumber_TextChanged(object sender, EventArgs e)
{
    number = this.serialNumber.Text;
}

答案 1 :(得分:2)

string number声明一个隐藏静态成员变量的新局部变量。

答案 2 :(得分:1)

serialNumber_TextChanged方法中,您声明了一个名为number本地变量。因此,如果这是您的完整代码,那么除了静态初始化之外,您实际上从未向Form1.number分配任何内容。

答案 3 :(得分:1)

更改这些行:

static string number = "";

private void serialNumber_TextChanged(object sender, EventArgs e)
{
    string number = this.serialNumber.Text;
}

private string number = "";

private void serialNumber_TextChanged(object sender, EventArgs e)
{
    number = this.serialNumber.Text;
}

答案 4 :(得分:0)

这正是发生的事情:您正在为变量number分配一个值,然后您不对该变量执行任何操作。

答案 5 :(得分:0)

首先,警告有效,并且与static成员有关,实际上,serialNumber_TextChanged成员已被分配并且从未使用过。 {{1}}中的那个是该方法的本地方法,根据定义,它是不同的。

这:“为什么不使用变量'数字'?”......我不明白。

答案 6 :(得分:0)

这是因为指令string中的string number = this.serialNumber.Text;,它声明了一个与类字段不同的新变量,尽管它具有相同的名称。删除string修饰符,指令将引用已声明的类字段。