有人能告诉我这个疯狂的c++语句在c#中是什么意思吗?

Can someone tell me what this crazy c++ statement means in C#?

本文关键字:是什么 意思 语句 c++ 告诉我 疯狂      更新时间:2023-10-16

首先,不,我不是学生…只是一个c#的家伙移植了一个c++库。

这两行疯狂的行是什么意思?它们在c#中相当于什么?我最关心的是size_t和sizeof。不关心static_cast或assert..我知道如何处理它们。

size_t Index = static_cast<size_t>((y - 1620) / 2);
assert(Index < sizeof(DeltaTTable)/sizeof(double));

y是双精度类型,DeltaTTable也是双精度类型[]。提前感谢!

size_t是一个无符号整数类型的typedef。它用于事物的大小,大小可以是32位或64位。size_t的特定大小是实现定义的,但它是无符号

我想在c#中可以使用64位无符号整数类型。

所有sizeof所做的是返回一个c++类型的字节大小。每种类型占用一定数量的空间,sizeof返回该大小。

你的代码正在做的是计算DeltaTTable占用的双精度浮点数(64位浮点数)。从本质上讲,它确保表大于基于y的某个大小,无论它是什么。

在c#中没有等价的sizeof,也不需要它。您没有理由将此代码移植到c#。

坏消息是你不能在c#中这样做。没有静态强制转换,只有动态强制转换。不过好消息是,这并不重要。

这两行代码断言索引在表的边界内,这样代码就不会意外地读取一些任意的内存位置。CLR会为您处理这个问题。所以在移植的时候忽略这些行,它们会自动出现在那里。

当然,这是基于基于代码模式的假设。没有关于Y代表什么以及如何使用Index的信息

sizeOf计算DeltaTable类型占用多少内存(以字节为单位)。在c# AFAIK中没有像这样计算大小的等效方法。

我猜size_t应该是c++代码中的struct类型