根据c#中的字符串值为某个整数赋值

本文关键字:整数 赋值 字符串 根据 | 更新日期: 2023-09-27 18:08:51

假设我有3个整数都声明为

int Y = 0;
int N = 0;
int U = 0;

从那里,我从存储过程中获取2个值(一个字符串和一个整数)。
字符串返回Y,N,U
整数返回出席人数。

string test = dr["ATTEND_CDE"].ToString();
int test2 = int.Parse(dr["COUNT"].ToString());

是否有更好的方法来给相应的整数赋值:

if (test == "Y")
{
    Y = test2;
}
else if (test == "N")
{
    N = test2;
}
else if (test == "U")
{
    U = test2;
}

根据c#中的字符串值为某个整数赋值

这里真正得到的是string ("Y", "N"或"U")和int之间的映射。

这是Dictionary的完美用例(遵循c# 6语法):

Dictionary<string, int> myValues = new Dictionary<string, int>()
{
    ["Y"] = 0,
    ["N"] = 0,
    ["U"] = 0
};
//usage
myValues[stringFromDatabase] = valueFromDatabase;

请注意,如果来自数据库的值是垃圾,则会抛出(这可能是您想要的)。

可以在字符串上使用switch语句。对于上面的例子,

switch(test)
{
    case "Y": Y = test2; break;
    case "N": N = test2; break;
    case "U": U = test2; break;
}

如果您将Y, N, U作为属性存储在类中,那么您可以使用

  • 数据合同(https://msdn.microsoft.com/en-US/library/ms733127%28v=VS.110%29.aspx)
  • 一个ORM框架(与c# 4.0一起使用的最佳ORM)
  • 自动JSON反序列化(使用Newtonsoft(或LINQ到JSON)将JSON反序列化到。net对象)

  • XML自动反序列化(http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm)

如果你使用c# 6.0,那么你至少可以做一些像

if(test.equals(nameof(y)))
{
     //...
}