ich eine Anwendung schreibe, die mehrere Datenbanken abfragen muss, so dass meine Verbindungszeichenfolgen zu standardisieren, schrieb ich die folgende Enumeration und Methode:(C#) Enum wird nicht zurückkehren int
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;
}
}
Aber das Problem ist, dass es den enum-Definitionen keinen numerischen Wert zuweist.
Laut MSDN, es sei denn, die Enum in einen anderen Datentyp gegossen wird, oder die Definitionen speziell definiert werden, sollten die Definitionen einen int-Wert haben mit 0
aber mir intellisense Start gripes, dass die Zeile:
myConnection.ConnectionString = DBSelect(DBEnum.DB1);
hat ungültige Argumente, und wenn ich etwas sagen wie
int i = DBEnum.DB1;
es fragt mich, ob ich ein gegossenes bin fehlt.
Danke!
Warum nehmen Sie nicht die Methode ändern zu ein 'DBEnum' anstelle eines' int'? – juharr
@juharr, weil ich ein Noob bin. Danke für diesen Vorschlag! –
Mögliches Duplikat von [Warum benötigen Enums eine explizite Umwandlung in den Int-Typ?] (Http://stackoverflow.com/questions/4728295/why-enums-require-an-explicit-cast-to-int-type) –