如何在c#中使用if/then语句设置变量类型?

本文关键字:语句 then 设置 变量 类型 if | 更新日期: 2023-09-27 18:07:58

我有一个执行SQL查询的函数。根据注册表值,它将击中SQL Server或SQL Server精简版。如果使用的是SQL Server CE,设置recordSet变量的行应该是这样的:

SqlCeDataReader recordSet = da.ExecuteSQLCommand(selectCommand);

对于SQL Server,它应该是这样的:

SqlDataReader recordSet = da.ExecuteSQLCommand(selectCommand);

我试图把所有这些在if/then语句在函数的开始,但似乎无法弄清楚如何设置类型内的if/then。以下是我的(部分)代码:

public static string SqlQuery(string selectCommand, int regval)
{
    var recordSet = null;
    string selectCommand = "select * from whatever";
    if (regval == 0)
    {
        SqlDataReader recordSet = null;
    }
    else
    {
        SqlCEDataReader recordSet = null;
    }
    recordSet = da.ExecuteSQLCommand(selectCommand);
}

问题是,除非我在if/else之前声明recordSet变量,否则我不能在之后使用它。但是,如果在if/else之前声明它,则不能更改类型。

如何在c#中使用if/then语句设置变量类型?

你不能那样做。变量的类型在编译时确实是固定的,除非你使用dynamic

您可以使用公共接口IDataReader。其他标准ADO。. NET客户端(如MySQL和SQLite)也实现了此功能。

编辑

这是一个示例

public static string SqlQuery(string selectCommand, int regval)
{
    IDataReader recordSet = null;
    string selectCommand = "select * from whatever";
    recordSet = da.ExecuteSQLCommand(selectCommand);
}