今天上班做Enhancement时发现一个数组问题:原本程序读取完数据后通过数组来传递,再用for each来输出;但是数据不存在导致数组为空的时候怎么办呢?
用IsNull、IsEmpty去测试空数组均失败,IsArray对空数组也无能为力,UBound则会报错……网上看到一个解决方案是捕捉UBound的On Error,但是似乎很邪恶……另外也有同时建议在发现数据不存在是手工往数组的第一个位置输入一个标记,事后先读一下标记内容——仍然很麻烦。
思考的时候偶然发现,这个程序之前并不会因为数组为空而报错,于是研究了一下前任Developer的写法……嗯,原来他在Dim一个array之后,立刻又redim preserve array(0)了,强制把数组设为非空。这样之后就可以用UBound测试数组是否为“空”了;如果需要向数组中填数据,每次再redim就可以了。真妙@ @
