Арифметические операции с IntPtr - C#

Узнай цену своей работы

Формулировка задачи:

Доброе времени суток, нужна ваша помощь, есть фрагмент рабочего кода:
//Создаем список элементов для добавления в группу(AddItems), размером 1 элемент
                uint dwCount = (uint)this.m_listItems.Items.Count;
                //uint dwCount = 1;
                Type type = typeof(tagOPCITEMDEF);
               // выделяем кусок в неуправляемой памяти под n элементов типа tagOPCITEMDEF
                 IntPtr pItems = Marshal.AllocCoTaskMem((int)dwCount * Marshal.SizeOf(type));
                
                //Создаем описатель добавляемого элемента
                tagOPCITEMDEF[] itemDef = new tagOPCITEMDEF[dwCount];//создаем новую структуру
                for (int i = 0; i < dwCount; i++)
                {
                    itemDef[i].szItemID = //ItemID;
                    itemDef[i].szAccessPath = null;
                    itemDef[i].bActive = Convert.ToInt32(Enabled);
                    itemDef[i].hClient = 1;
                    itemDef[i].vtRequestedDataType = (ushort)VarEnum.VT_EMPTY;
                    itemDef[i].dwBlobSize = 0;
                    itemDef[i].pBlob = IntPtr.Zero;
                    Marshal.StructureToPtr(itemDef[i], pItems + (dwCount-1) * Marshal.SizeOf(type), false);
                }
В последней строчке кода (Marshal.StructureToPtr(itemDef[i], pItems + Marshal.SizeOf(type), false) выпадает ошибка "Операция "+" не может применяться к IntPtr и int". Код с рабочего приложения и он работает. Почему у меня не хочет не пойму?

Решение задачи: «Арифметические операции с IntPtr»

textual
Листинг программы
            int m = 256;
            IntPtr p = new IntPtr(256);
 
            IntPtr newP = new IntPtr((int)p + m);

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы