c# winform使用未赋值的局部变量

本文关键字:赋值 局部变量 winform | 更新日期: 2023-09-27 17:50:37

我有代码检索数据库中的值作为prev_count和做一些计算:

public void calc(string query1,int total_pages1,string m,int y)
    {
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query1, connection);
            MySqlDataReader datareader = cmd.ExecuteReader();
            int calc_pages;
            int prev_count;
            while (datareader.Read())
            {
                prev_count = datareader.GetInt32(0);
                calc_pages = total_pages1 - prev_count;
            }
            //close Data Reader
                datareader.Close();
            Insert(m, y, calc_pages); // problem line
            //close Connection
            this.CloseConnection();
        }
    }

现在我的问题是,错误状态是"使用未分配的局部变量'calc_pages'"。我知道这很简单,但我是c#新手。帮助任何人吗?

c# winform使用未赋值的局部变量

您只需要在使用calc_pages之前为其分配一个值。所以,不用这个:

int calc_pages;
int prev_count;

你应该这样做:

int calc_pages = 0;
int prev_count = 0;

如果出现您在稍后引用calc_pages之前为其分配值。

问题是,如果在datareader中没有数据,那么while循环将不会运行,并且这些值将永远不会被赋值。

编译器不能提前确定循环是否会执行,所以你会得到一个错误。

(如果您试图在 while 循环之外使用 prev_count ,您目前会得到相同的错误)