如何将 system.intptr 转换为 int



我在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"。存在显式转换(您是否缺少强制转换?

您需要按

如下方式将IntPtr转换为int

strArrays3[num1] = string.Concat(strArrays4[(int)intPtr], ":");

但是您首先应该使用int。然后你不需要演员表来int.

最新更新