如何增加字符串值?例如:
string RECONCILIATION_COUNT;
if (thing happens) {
RECONCILIATION_COUNT++;
}
这通常不会起作用,因为无法以与int值相同的方式递增字符串变量。
RECONCILIATION_COUNT
始终是0-5之间的数字。
我选择将它声明为字符串,因为我从数据库中获取此值,而我找不到如何从sql获取int值的方法。
RECONCILIATION_COUNT = Rows["RECONCILIATION_COUNT"].toString();
这就是我目前正在使用的。
答案 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工作中保存它时就完成了。
希望这有帮助。