主要内容

隐藏枚举成员

隐藏枚举成员使类作者能够更改枚举成员名称,而不会在现有代码中引起不兼容。属性的枚举块可隐藏成员隐藏的属性。中定义的成员隐藏的属性查询枚举成员时,枚举块不可见枚举函数。

当一个枚举类派生自另一个类时,例如数值类或逻辑类,则每个成员都可以有一个与其相关联的值。如果两个成员具有相同的赋值,则类定义中第一个定义的成员掩码第二个成员。两个名称都是有效的枚举成员,但定义的第一个名称是主成员。虽然屏蔽可以使用一个成员名代替另一个成员名,但它不会对类用户隐藏辅助名。

使用隐藏的属性从用户视图中移除屏蔽成员名。例如,HighlightColor类定义了表示语法高亮显示颜色的枚举成员。

classdefHighlightColor < int32枚举红(1)绿(2)蓝(3)结束结束

类的新版本使用了更具描述性的成员名,但类需要避免破坏使用原始成员名(红色、绿色和蓝色)的现有代码。使用隐藏的属性使类可以隐藏原始成员。

classdefHighlightColor < int32枚举错误(1)评论(2)关键字(3)结束枚举(隐藏)红(1)绿(2)蓝(3)结束结束

使用原始成员名的代码继续工作。例如,对现在隐藏的成员的现有引用HighlightColor.blue是否与同值非隐藏成员兼容HighlightColor.keyword

a = HighlightColor.blue
a = HighlightColor枚举关键字
a == HighlightColor。关键字
Ans =逻辑1

对于表示值的枚举成员,类中定义的第一个成员是该值的主成员。例如,在HighlightColor类,关键字主要成员和蓝色的是辅助成员,都表示值3。通常,主成员不隐藏,而辅助成员隐藏。但是,如果类设计要求隐藏主成员,那么辅助成员也必须隐藏。

隐藏纯枚举

纯枚举成员没有底层值,因此无法将一个成员标识为另一个成员的替换。但是,您可以使用隐藏的属性从用户视图中删除成员,同时避免与隐藏成员的现有用途不兼容。

例如,PCComponents类定义在线表单中用于计算机订单的枚举。而FloppyDrive组件过时时,枚举成员可以作为隐藏成员保留在类中。表单可以排除FloppyDrive,但类作者可以保持该成员可用,以便引用的现有表单FloppyDrive仍然有效。

classdefPCComponents枚举USBSlots CDPlayer结束枚举(隐藏)FloppyDrive结束结束

查找隐藏的枚举成员

使用类元数据查找有关隐藏枚举成员的信息。的元。EnumeratedValue类提供关于枚举成员的信息。对象的元数据HighlightColor前面示例中使用的类可以显示隐藏成员的名称。

mc = ?HighlightColor
mc = class with properties: Name: 'HighlightColor'描述:" DetailedDescription: "隐藏:0密封:0摘要:0枚举:1 ConstructOnLoad: 0 handlecomcompatible: 0 InferiorClasses: {[1×1 meta.class]} ContainingPackage: [0×0 meta.class]Aliases: [0×1 string] RestrictsSubclassing: 0 PropertyList: [0×1 meta. package][140×1 meta. properties] MethodList: [140×1 meta. properties]EventList: [0×1 meta.]EnumerationMemberList: [6×1 meta. event]EnumeratedValue] SuperclassList: [1×1 meta.class]

每个枚举成员由a描述元。EnumeratedValue对象中包含的EnumerationMemberList财产。例如,元素中的第四个元素EnumerationMemberList数组包含元。EnumerationValue对象获取具有名称的成员红色的

mc.EnumerationMemberList (4)
ans = EnumeratedValue与属性:名称:'红色'描述:"详细描述:"隐藏:1

要列出所有隐藏成员的名称,请使用句柄类findobj方法:

findobj (mc。EnumerationMemberList,“隐藏”,真正的)。名字
Ans = '红' Ans = '绿' Ans = '蓝'

另请参阅

|