首先,不,我不是学生......只是一个移植C ++库的C#人。
这两条疯狂的线条是什么意思?它们在C#中相当于什么?我最关心的是size_t和sizeof。不关心static_cast或断言..我知道如何处理这些。
size_t Index = static_cast<size_t>((y - 1620) / 2);
assert(Index < sizeof(DeltaTTable)/sizeof(double));
y是双精度,DeltaTTable是双精度[]。提前谢谢!
答案 0 :(得分:3)
size_t
是无符号整数类型的typedef。它用于物体的大小,可以是32或64位大小。 size_t
的特定大小是实现定义的,但它是 unsigned 。
我想在C#中你可以使用64位无符号整数类型。
所有sizeof
都返回C ++类型的字节大小。每种类型占用一定数量的空间,sizeof
返回该大小。
您的代码正在做的是计算DeltaTTable
占用的双精度数(64位浮点数)。从本质上讲,它确保表格大于基于y
的某个大小,无论是什么。
C#中没有等效的sizeof
,也不需要它。您没有理由将此代码移植到C#。
答案 1 :(得分:3)
坏消息首先你不能在C#中做到这一点。没有静态强制转换动态转换。然而好消息是没关系。
这两行代码断言索引是在表的边界内,这样代码就不会意外地读取某个任意内存位置。 CLR会为您解决这个问题。因此,移植时只需忽略这些行,它们会自动为您提供任何方式。
当然,这是基于基于代码模式的假设。没有关于Y代表什么以及如何使用索引的信息
答案 2 :(得分:0)
sizeOf计算DeltaTable类型占用的内存量(以字节为单位)。 没有相当于在c#AFAIK中计算这样的大小。
我猜size_t很多是C ++代码中的结构类型。