X++:
Struct s = new Struct();
;
s.add("01","1-");
s.add("02","2-");
s.add("03","3-");
info(strfmt("%1", s.toString()));
s.remove("02");
s.remove("03");
info(strfmt("%1", s.fields()));
info(strfmt("%1", s.toString()));
info(strfmt("%1", s.valueIndex(2)));
s.add("04","4-");
s.add("05","5-");
info(strfmt("%1", s.fields()));
info(strfmt("%1", s.valueIndex(2)));
s.add("06","6-");
info(strfmt("%1", s.fields()));
s.remove("02");
s.remove("03");
s.remove("04");
s.remove("05");
info(strfmt("%1", s.fields()));
info(strfmt("%1", s.toString()));
Похоже возвращает максимально количество полей, которое было в структуре. Т.к. перетирание индекса происходит корректно и toString тоже выводит правильную информацию.