У меня проблема с компиляцией программы в Visual Studio. Пожалуйста помоги.
...
else
{
string str4 = strArrays1[i];
chrArray = new char[] { ':' };
strArrays = str4.Split(chrArray);
string str5 = strArrays[0];
string str6 = "";
for (j = 1; j < (int)strArrays.Length; j++)
{
str6 = string.Concat(str6, strArrays[j]);
if (j < (int)strArrays.Length - 1)
{
string[] strArrays3 = strArrays;
string[] strArrays4 = strArrays3;
int num1 = j;
IntPtr intPtr = (IntPtr)num1;
strArrays3[num1] = string.Concat(strArrays4[intPtr], ":");
}
}
this.hashTable[str5] = str6;
}
...
Проблема возникает в строке:
strArrays3 [num1] = string.Concat (strArrays4 [intPtr], ":");
Ошибка:
CS0266 C# Не удается неявно преобразовать тип «System.IntPtr» в «int». Существует явное преобразование (вам не хватает приведения?)
Я не создатель этой программы, поэтому не буду отвечать на вопрос. К сожалению, мне нужно его скомпилировать: /
Пожалуйста, отредактируйте вопрос, чтобы включить конкретное сообщение об ошибке.
CS0266 C# Не удается неявно преобразовать тип «System.IntPtr» в «int». Существует явное преобразование (вам не хватает приведения?)
Основываясь на расплывчатых именах переменных, производных от типов, вы пытаетесь перекомпилировать этот декомпилированный код? Это может объяснить, почему эта строка (и, на самом деле, все тело оператора if) не было написано просто strArrays[j] = string.Concat(strArrays[j], ":");.





Вам нужно перевести IntPtr в int следующим образом.
strArrays3[num1] = string.Concat(strArrays4[(int)intPtr], ":");
Но вы должны использовать int в первую очередь. Тогда вам не понадобится приведение к int.
Эм. Почему вы используете IntPtr для циклического индексатора? Обычно это будет просто int.