我需要将我10年前编写的一些C ++代码移植到C#中。我不是C#专家,有人告诉我在C#中使用结构是不好的做法。
这是原始的C ++结构:
typedef struct TacticalLineStruct {
int NumGroups; // The number of groups in the struct
int GroupID[MAX_UNITS]; // which Group the vertex belongs to
int EdgeList[MAX_UNITS * MAX_UNITS][2]; // An array of edges
float EdgeWeight[MAX_UNITS * MAX_UNITS]; // The weight for each edge
int NumBelowThreshold;
POINT GroupCenter[MAX_UNITS]; // The geographical center of each group
int NumEdges;
} TacticalLineStruct;
在C#中执行此操作的正确方法是什么?
答案 0 :(得分:1)
不得不说,对于大多数人都同意struct是一种不好的做法,我感到非常惊讶。我非常不同意:它只是一种不同的工具,它的优缺点与其他语言所提供的一样。
结构是值类型,它们的工作方式与任何值(int
,float
,char
...)相似:它们通过复制而不是通过引用传递(在C ++中,它等效于在不使用与号&
的情况下获取参数的函数。
基本上,您必须知道该对象的用途。如果要通过代码库的大部分发送它,则可以考虑使用一个类,因为跟随指针通常比复制整个结构更快。另一方面,如果应该将此对象放在函数堆栈中以处理其他内容,则可能是您需要的结构。
无论如何,我们无法告诉您如何完成工作:p但是,我们可以为您指明我们认为方便的方向;但是我们肯定需要更多的信息,而不仅仅是“我该怎么做?”。
总而言之,对于“构造不良行为吗?”这个问题,我会回答绝对不是。您只需要知道何时使用它们。对于“您应该如何实施解决方案,”隐含的问题,考虑到您没有提出明确的问题(这可能是您的问题被否决的原因),我不能说太多