如何将 system.intptr 转换为 int

How to convert system.intptr to 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.