首页 > 解决方案 > 相当于 C# 中 C++ 的 sizeof(uint64Array)?

问题描述

在此代码上:http: //prng.di.unimi.it/xoshiro256plus.c 他们这样做:

static const uint64_t JUMP[] = { 0x180ec6d33cfd0aba, 0xd5a61266f0c9392c, 0xa9582618e03fc9aa, 0x39abdc4529b1661c };

 for(int i = 0; i < sizeof JUMP / sizeof *JUMP; i++)

sizeof JUMP / sizeof *JUMP是什么意思以及如何将其移植到 c# ?

根据 https://docs.microsoft.com/fr-fr/dotnet/api/system.runtime.interopservices.marshal.sizeof?view=netframework-4.8,sizeof JUMP似乎是Marshal.Sizeof(JUMP)

但是 Marshal.Sizeof(*JUMP) 不能在安全模式下完成,我不能使用不安全的代码。

并根据此页面:https : //en.cppreference.com/w/cpp/language/sizeof sizeof JUMP / sizeof *JUMP返回数组的长度。那么为什么不直接放 4,因为 JUMP 长度是已知的呢?

感谢。

标签: c#random

解决方案


为什么不直接放 4,因为 JUMP 长度是已知的

因为与 C# 的数组不同,您不能简单地访问LengthC++ 中数组的属性。是的,今天4 是正确答案,但是如果有人稍后编辑数组并且有 3 或 5 个条目怎么办?他们还必须记得编辑for


推荐阅读