本文是这个帖子讨论的小结,感谢chenjl1031和Tiger_Zhao的指点。
话说,我的函数参数有将近十个,挨个赋值容易出错,而且看起来很乱,所以想定义成结构体,好维护一些。另外,我想给这个结构体赋缺省值。在函数里进一步判断,如果是缺省值,就不做事,如果不是,才做事。VB只能对变体类型用ismissing函数,所以,我用这个办法来模拟变通ismissing的效果。所以我想定义一个结构常量,用来给这个结构参数赋缺省值。比如:
但是,讨论下来,发现这还真是个难题。
首先,常数的数据类型可以是:Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String 或 Variant。常量不能是结构。
其次,可选参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持变长)、Object 或 Variant。如果参数不是 Optional,则也可以是用户定义类型,或对象类型。也就是说,可选参数也不能是结构。
chenjl1031帮助我弄清楚上面两点之后,我就准备放弃结构,改用类了。我是这么做的。我直接在类的initialize里初始化变量。函数中判断类参数如果是nothing,就new一个(就会自动调用initialize),函数结尾再set nothing.
之后无所不能的Tiger_Zhao又出了个特棒的主意,他就用结构,呵呵。看下面的代码:
其实,用类也可以用全局的 Property Get 做初始化。作为 optional 参数,函数中检查参数是否为 nothing,是的话就用属性 cc 替代。不过的话,在 initialize 中自动是最正规的做法。
原文链接:https://www.f2er.com/vb/263220.html