在C#代码中看不到变量

本文关键字:看不到 变量 代码 | 更新日期: 2023-09-27 18:16:12

学习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;
    }

我不断收到一个警告,字段"number"已分配但未使用。

在C#代码中看不到变量

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

这样可以避免发出警告

公共分部类Form1:Form{

static string labelText = "";
static string number = "";
public Form1()                                  
{
    InitializeComponent();
}
private void serialNumber_TextChanged(object sender, EventArgs e)
{
    number = this.serialNumber.Text;
}

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

更改这些行:

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;
}

serialNumber_TextChanged方法中,您声明了一个名为number局部变量。所以,如果这是您的完整代码,那么除了静态初始化之外,您永远不会实际向Form1.number分配任何东西。

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

首先,警告是有效的,并且与static成员有关,事实上,该成员已被分配且从未使用过。serialNumber_TextChanged中的一个是该方法的局部,并且根据定义是不同的。

这个:"为什么这里不使用变量‘数字’?"。。。我不明白。

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