另外,较为常见的两种类型是CHOICE和ANY,实际上它们不是真正的数据类型,而是一种定义方法。
CHOICE:字面上理解为选择类型,指的是在一组类型中选择其中某一项数据类型。当备选类型中有多个相同的数据类型,需要显式地指定子Tag以作区分。由于CHOICE不是具体的数据类型,表2-5中没有对应的Tag字段。为了能正确地进行编码传输,其Tag由被选中数据类型的Tag表示。CHOICE一般用于事先已经知道有哪些数据类型可供选择的情况。
--可选择的支付方式:信用卡或现金
PaymentMethod ::= CHOICE {
credit-card NumericString,
cash INTEGER
}
ANY:可选择ASN.1中的任意类型,相比CHOICE来说,ANY可选择的类型更广,甚至是将来可能出现的类型。