длина объекта c# от переменной

Когда я пробую что-то вроде этого

DataTable wynikIlosc=API.exported.Database.executeQueryWithResult("select count(*) as ilosc from Przedmioty limit 1");
przedmioty= new object[(int)wynikIlosc.Rows[0]["ilosc"]];

Я получаю эту ошибку:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidCastException: Specified cast is not valid.

Когда я использую это

przedmioty= new object[20];

это работает.
То же самое происходит с новым массивом объектов в массиве объектов.

przedmioty[0]=new object[6] {"test",1,1337,1,1,"test"};

Работал, но

int i=0;
przedmioty[i]=new object[6] {"test",1,1337,1,1,"test"};

Не получилось.

2 ответа

  1. ilosc может не возвращаться как a Type.Int32(который является int). Это может быть возвращаемое значение DbType(или OracleDbTypeили какая-либо база данных)enum, как DbType.Int32или OracleDbType.Decimal. Явное преобразование не всегда хорошо работает с этими типами данных. Чтобы обойти это, я часто использую .ToString()метод поля результата, а затем использую .Parseor .TryParseв качестве способа приведения:

    double.Parse(field[0][i].ToString());