将Delphi变体记录转换为C#struct
发布时间:2020-12-15 09:20:02 所属栏目:大数据 来源:网络整理
导读:当我尝试从现有应用程序编写C#应用程序但在Delphi中开发时, 非常艰难,但管理了一些如何,但现在我遇到了一个问题…… Delphi代码包含以下代码: type TFruit = record name : string[20]; case isRound : Boolean of // Choose how to map the next section T
当我尝试从现有应用程序编写C#应用程序但在Delphi中开发时,
非常艰难,但管理了一些如何,但现在我遇到了一个问题…… Delphi代码包含以下代码: type TFruit = record name : string[20]; case isRound : Boolean of // Choose how to map the next section True : (diameter : Single); // Maps to same storage as length False : (length : Single; // Maps to same storage as diameter width : Single); end; 即一个变体记录(内部有case语句),因此也构建了记录及其大小. 解决方法
您可以使用显式结构布局来复制此Delphi变体记录.但是,我不会打扰,因为你似乎不太可能想要分配直径来分配长度,反之亦然. Delphi记录声明看起来像是20世纪90年代中期的Delphi编码风格.现代Delphi代码很少以这种方式编写.
我会这样做: struct Fruit { string name; bool isRound; float diameter; // only valid when isRound is true float length; // only valid when isRound is false float width; // only valid when isRound is false } 更优雅的选项是具有每个struct字段属性的类.如果为了无效的isRound值访问它们,你会安排3个浮点数的属性getter和setter引发异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |