таблица данных ячейки математика - PullRequest
2 голосов
/ 28 апреля 2020

Я очень новичок во всем этом C# и буду очень признателен за вашу мудрость в этом: я делаю игру, похожую на игру, которая должна хранить и постоянно обновлять базу данных для множества людей.

В настоящее время я пытаюсь создать DataTable dt;

Добавить столбцы dt.Colums.Add("age", typeof(int));

Добавить строки dt.Rows.Add(10);

Теперь я хотел бы динамически измените содержимое ячейки, в которой содержится значение возраста int, от 10 до 11.

Я пытаюсь dt.Rows[0]["age"] += 1;

Однако получаю следующее:

Ошибка CS0266 Невозможно неявно преобразовать тип «объект» в «int». Существует явное преобразование (вам не хватает приведения?)

Я не совсем понимаю, почему «ячейка» возвращает объект, а не int. Как можно было бы выполнять математические операции непосредственно с содержимым ячейки?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Здесь dt.Rows [0] ["age"] - это объект, а не целочисленный тип, поэтому оператор '+ =' нельзя применить к операндам типа 'object' и 'int'. Попробуйте это,

        dt.Rows[0]["age"] = Convert.ToInt16(dt.Rows[0]["age"]) + 1;
0 голосов
/ 28 апреля 2020

Индексатор для 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;

Обратите внимание, что += не будет работать ни в одном случае, так как вы чтобы получить значение, нужно использовать выражение (приведение или вызов метода).

...