将Delphi变体记录转换为C#struct

将Delphi变体记录转换为C#struct,第1张

概述当我尝试从现有应用程序编写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语句),因此也构建了记录及其大小.
另一方面,我试图在C#struct中做同样的事情,但还没有成功,我希望有人能在这里帮助我.
所以,请告诉我是否有任何方法可以在C#中实现这一点.
提前致谢….

解决方法 您可以使用显式结构布局来复制此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引发异常.

总结

以上是内存溢出为你收集整理的将Delphi变体记录转换为C#struct全部内容,希望文章能够帮你解决将Delphi变体记录转换为C#struct所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存