我对C#的整个过程非常陌生,非常感谢您在这方面的智慧:我正在制作一个类似游戏的东西,需要为一群人存储并不断更新数据库。
目前我正在尝试创建一个DataTable dt;
添加列dt.Colums.Add("age", typeof(int));
添加行dt.Rows.Add(10);
现在,我想动态调整保存年龄int值为10到11的单元格的内容。
我尝试dt.Rows[0]["age"] += 1;
然而,我得到了以下内容:
错误CS0266无法将类型"object"隐式转换为"int"。存在显式转换(是否缺少强制转换?(
我很困惑为什么"单元格"返回的是对象而不是int。如何直接用单元格的内容进行数学运算?
此处为dt。Rows[0]["age"]是一个对象,而不是Integer类型,因此运算符"+="不能应用于"object"one_answers"int"类型的操作数试试这个,
dt.Rows[0]["age"] = Convert.ToInt16(dt.Rows[0]["age"]) + 1;
即使设置了列的数据类型,DataRow
的索引器也会返回一个object
。您可以将值强制转换为int
:
dt.Rows[0]["age"] = (int)(dt.Rows[0]["age"]) + 1;
或使用Field
扩展方法
dt.Rows[0]["age"] = dt.Rows[0].Field<int>("age") + 1;
请注意,+=
在这两种情况下都不起作用,因为您必须使用表达式(强制转换或方法调用(来获取值。