【发布时间】:2017-04-14 00:13:25
【问题描述】:
我正在编写一个需要查询多个数据库的应用程序,所以为了标准化我的连接字符串,我编写了以下枚举和方法:
class Program
{
enum DBEnum { DB1, DB2, DB3, DB4, DB5 }
static void Main(string[] args)
{
using (CacheConnection myConnection = new CacheConnection())
{
myConnection.ConnectionTimeout = 9999;
myConnection.ConnectionString = DBSelect(DBEnum.DB1);
myConnection.Open();
}
}
public static string DBSelect(int i)
{
string connectionString = "";
switch (i)
{
case 0:
connectionString = *connection string*;
break;
case 1:
connectionString = *connection string*;
break;
case 2:
connectionString = *connection string*;
break;
case 3:
connectionString = *connection string*;
break;
case 4:
connectionString = *connection string*;
break;
default:
break;
}
return connectionString;
}
}
但问题是它没有为枚举定义分配数值。
根据 MSDN,除非枚举被强制转换为不同的数据类型,或者定义是专门定义的,否则定义应该有一个以 0 开头的 int 值。
然而,智能感知对我的抱怨是:
myConnection.ConnectionString = DBSelect(DBEnum.DB1);
有无效的参数,如果我说类似
int i = DBEnum.DB1;
它会问我是否缺少演员表。
谢谢!
【问题讨论】:
-
你为什么不把方法改成
DBEnum而不是int? -
@juharr 因为我是菜鸟。谢谢你的建议!
标签: c# enums casting int enumerator