增加字符串值

时间:2018-04-20 09:22:21

标签: c# .net variables

如何增加字符串值?例如:

string RECONCILIATION_COUNT;
if (thing happens) {
    RECONCILIATION_COUNT++;
}

这通常不会起作用,因为无法以与int值相同的方式递增字符串变量。

RECONCILIATION_COUNT始终是0-5之间的数字。

我选择将它声明为字符串,因为我从数据库中获取此值,而我找不到如何从sql获取int值的方法。

RECONCILIATION_COUNT = Rows["RECONCILIATION_COUNT"].toString();

这就是我目前正在使用的。

4 个答案:

答案 0 :(得分:5)

计数作为String非常奇怪:int是非常自然的选择。从技术上讲,你可以把它作为

if (thing happens)
  RECONCILIATION_COUNT = (int.Parse(RECONCILIATION_COUNT) + 1).ToString();

更好的实施方法是使用int

int RECONCILIATION_COUNT;

...

if (thing happens)
  RECONCILIATION_COUNT++;

...

RECONCILIATION_COUNT = Convert.ToInt32(Rows["RECONCILIATION_COUNT"]);

答案 1 :(得分:2)

如果您希望将数值作为字符串从数据库中获取,则可以将其解析为" int"稍后:

使用Int32.Parse方法:

 int number = Int32.Parse(RECONCILIATION_COUNT);

Int32.TryParse方法:

     int number;

     bool result = Int32.TryParse(RECONCILIATION_COUNT, out number);
     if (result)
     {
        // do your increment     
     } 

答案 2 :(得分:1)

RECONCILIATION_COUNT = "" + (int32.Parse(RECONCILIATION_COUNT) + 1);

但是如果变量总是一个数字,我宁愿将RECONCILIATION_COUNT声明为int,并在从数据库上传时将文本解析为数字。

答案 3 :(得分:0)

我认为你的方法有点奇怪。您在SQL和您的代码中创建数据类型之间的紧密耦合,并且通过这样做,您只是因为DB约束而累积技术债务(解决方法)。

我建议您做的是在存储库中执行从字符串到int和向后的转换(当您想在数据库中写入该值时)。

关于使用int.parse(或类似命令)的所有答案都是有效的,但请仔细考虑一下,如果您执行以下操作会发生什么:

reconciliation_count = int.parse(reconciliation_count)++.ToString();

分解: - int.parse - 为你增加的新变量分配内存 - ToString - 为新字符串分配内存,该字符串将重新分配给您的变量

有很多内存在上下移动,你依靠GC来为你清理所有内容,并且不要忘记字符串是不可变的。

但是,如果你遵循我的方法,你可以只分配一个int变量ONCE并用它做任何你想做的事情然后当你在DB工作中保存它时就完成了。

希望这有帮助。