将intPtr添加到int会在.net framework 3.5上生成错误

本文关键字:错误 framework net 添加 intPtr int 会在 | 更新日期: 2023-09-27 18:00:45

我有这个代码:

lvItem.pszText = (IntPtr)(lpRemoteBuffer + Marshal.SizeOf(typeof(LV_ITEM)));

它在4.0上运行良好。

如果我把项目降级到3.5,就会出现以下错误:

Operator '+' cannot be applied to operands of type 'System.IntPtr' and 'int'

知道我该如何修复它以使其在3.5 上工作吗

我不知道为什么它能在4.0中工作?

提前感谢

将intPtr添加到int会在.net framework 3.5上生成错误

是的-如果您查看Addition属性的文档,您会发现该运算符仅在.NET4中引入。顺便说一句,你不应该需要演员阵容。

在.NET 3.5上,您可能会使用:

lvItem.pszText = new IntPtr(lpRemoteBuffer.ToInt64() +
                            Marshal.SizeOf(typeof(LV_ITEM)));

当然,你需要希望你不是在一个32位系统上,指针在int.MaxValue上:)

IntPtr在.NET 4.0之前不支持指针算术。如果你想用这种方式处理指针,你必须使用真正的指针来代替IntPtr。