变量未声明或从未赋值

本文关键字:赋值 未声明 变量 | 更新日期: 2023-09-27 18:19:50

我正在重构代码以实现多数据库工作。我使用System.Data.Common类和工厂为当前选定的数据库引擎创建Exact对象。Designed中的一些连接定义如下:

private System.Data.Common.DbConnection cn;

分配为:

private void InitializeComponent()
{
...
    this.cn = SqlFactory.CreateConnection();
...
}

SqlFactory代码看起来像:

public DbConnection getConnection()
{
    return (TSqlConection)Activator.CreateInstance(typeof(TSqlConection));
}

它在运行时工作正常,但当我试图在VS Designer中打开任何表单时,我都会遇到以下错误:

The variable 'cn' is either undeclared or was never assigned.

设计器无法显示表单进行编辑。

我该怎么修?

变量未声明或从未赋值

InitializeComponent方法通常不应手动触摸,表单设计器总是在打开它后覆盖它的内容。Visual Studio通常会在*.Designer.cs中添加一个自动生成的注释。此外,我建议不要尝试在默认构造函数(没有参数的构造函数)中创建任何DB连接,因为当您尝试在设计器中打开窗体时,Visual Studio会调用它。

所以,你的选择是

  1. 为带有参数的表单创建一个额外的构造函数,这个构造函数可以尝试初始化数据库连接
  2. 使用表单的Load事件
  3. 在表单中创建一个名为InitConnections的附加方法,此方法将执行必要的初始化。在代码中的某个位置创建表单后,您立即调用它

从Designer.cs中删除this.cn = SqlFactory.CreateConnection();和有关cn的所有内容。在InitializeComponent();之后添加此部分。

现在您可以编辑表单,不会出现任何错误。