gpt4 book ai didi

clr - 可以安全地将 Numeric.Complex 与 PInvoke 一起使用吗? (它没有 LayoutKind.Sequential)

转载 作者:行者123 更新时间:2023-12-04 19:25:17 24 4
gpt4 key购买 nike

我想在非托管 PInvoke 方案中使用 System.Numerics.Complex。使用 ILSpy,我注意到它没有分配 LayoutKind.Sequential 属性。

/// <summary>Represents a complex number.</summary>
[Serializable]
public struct Complex : IEquatable<Complex>, IFormattable
{
private double m_real;
private double m_imaginary;
...

在不转换为期望通用内存布局的 native 函数的情况下提供指向 Complex[] 数组的指针是否安全,即:首先是实数,其次是虚数?或者 CLR 是否可能出于某种原因打乱其真实和虚构的属性?

最佳答案

LayoutKind.Sequential 是所有主要 .NET 编译器的默认设置:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.layoutkind.aspx

即使不会:更改属性顺序的唯一原因是对齐问题。由于 System.Numerics.Complex 只有两个双重成员,因此没有理由交换它们。所以 IMO 你是安全的。

关于clr - 可以安全地将 Numeric.Complex 与 PInvoke 一起使用吗? (它没有 LayoutKind.Sequential),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com