在C#中实现Rust枚举的最佳方法是什么?
发布时间:2020-12-15 22:16:30 所属栏目:百科 来源:网络整理
导读:我有一个实体可以处于不同的状态之一(StateA,StateB和StateC),并且每个实体都有不同类型的相关数据(TStateA,TStateB,TStateC). Enums in Rust represent this perfectly.在C#中实现这样的东西的最佳方法是什么? This question may appear similar,但Rust中
我有一个实体可以处于不同的状态之一(StateA,StateB和StateC),并且每个实体都有不同类型的相关数据(TStateA,TStateB,TStateC).
Enums in Rust represent this perfectly.在C#中实现这样的东西的最佳方法是什么?
This question may appear similar,但Rust中的枚举和C中的联合会有很大不同. 解决方法
您需要一个班级来代表您的实体
class Entity {States state;} 然后你需要一组类来表示你的状态. abstract class States { // maybe something in common } class StateA : MyState { // StateA's data and methods } class StateB : MyState { // ... } 然后你需要写代码 StateA maybeStateA = _state as StateA; If (maybeStateA != null) { - do something with the data in maybeStateA } C#没有为此编写代码的好方法,也许正在为C#.next考虑的Pattern Matching会有所帮助. 我认为你应该重新考虑你的设计来使用对象关系和遏制,试图采用一种生锈的设计并强制它进入C#可能不是最好的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |