Немного OT: Можете ли вы инкапсулировать список, а не массив, и тогда все выпадет в стирке, поскольку инкапсулированный список будет генерировать соответствующие исключения?
Редактировать: если вам действительно нужен массив внутри, как насчет , сначала поместив его в список внутри метода доступа , а затем выбрав по индексу. Таким образом, перевод из списка в индекс массива происходит на языке вашего компонента, а не на языке вызывающего.
Предположительно, семантика индексации списков не меняется в разных языках .Net? Именно этому должен следовать ваш компонент, поскольку он реализует интерфейс списка.
Снова отредактируйте: на самом деле, это вообще проблема ??
Люди получают доступ к вашему массиву через средство доступа, написанное на языке, которым вы управляете, и поэтому знают, с чего начинается индексация массива. Даже если вы вызываете свой (скажем) класс C # из вызывающей стороны VB.Net, средство доступа все равно будет использовать идею индексов массива в C #, не так ли?