Можно ли увеличивать / уменьшать значение в потоке данных, используя операторы C #?

#c#

#c#

Вопрос:

Похоже, что увеличить значение можно, только сказав:

 DataRow someRow = GetRow();
someRow[0] = someRow[0]   10;
  

Есть ли какой-либо способ выполнить эту операцию на C #? Кажется, я ничего не могу найти…Я предполагаю, что это связано с потоком данных.Item возвращает объект.

 DataRow someRow = GetRow();
someRow[0]  = 10;
someRow[0] -= 10;
someRow[0] *= 5;
  

Комментарии:

1. Вы уверены, что это someRow[0] 10 работает?

2. «. Я предполагаю, что это связано с потоком данных. Item возвращает объект. » — да. Столбец может иметь строковое значение, поэтому = 10 он не будет действительным.

3. Единственное, что будет компилироваться, это someRow[0] = (int)someRow[0] 10;

Ответ №1:

Есть ли какой-либо способ выполнить эту операцию на C #?

Нет, сначала вам нужно преобразовать или преобразовать someRow[0] в соответствующий тип, а затем вы можете использовать сложение, умножение и т.д.

Следующее приведет к ошибке компиляции:

 someRow[0] = someRow[0]   10;
  

поскольку someRow[0] тип s Object равен, а 10 является целочисленным литералом.

Правильный подход был бы примерно следующим:

 someRow[0] = (int)someRow[0]   10;
  

Ответ №2:

В качестве альтернативы вы можете использовать метод TryParse в c # и проверить, действительно ли возвращаемый объект является целым числом, а затем выполнить требуемую операцию.

Нравится:

 int temp;
Int64.TryParse((String)someRow[0], out temp);
someRow[0] = temp   10;
  

Вы могли бы преобразовать onject в int, просто приведя его: (int)someRow[0] или используя методы ConvertTo, но приведенные выше методы наименее подвержены ошибкам.