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

时间:2011-08-12 05:04:55

标签: c# c++ port

首先,不,我不是学生......只是一个移植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是双精度[]。提前谢谢!

3 个答案:

答案 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 ++代码中的结构类型。