Индексирование на основе одного на языке CLR? - PullRequest
4 голосов
/ 26 января 2011

Я работаю на очень высокоуровневом предметно-ориентированном языке, который занимается анализом данных.Существует виртуальное единообразное соглашение о том, что однофакторная индексация - это путь с научной точки зрения.Конечно, программисты ненавидят это несоответствие, но практически все наши пользователи привыкли использовать x [i] для обозначения элемента i, а не элемента i-1.

Существуют ли какие-либо принципы проектирования, которые можно использовать для сохранения некоторого вменяемогоистория совместимости с CLR?Я чувствовал, что если мы автоматически переведем пространство System.Collections с вариантами на основе одного, вместе с нашими API на основе C #, то мы должны быть на 90%.Но я не уверен.Например, должны ли мы автоматически перебазировать интерфейс IList?Но что произойдет, если C # API реализует CustomRemove (zeroBasedIndex)?

Есть ли что-то еще, что мы можем сделать, чтобы ослабить это болезненное несоответствие?Как далеко мы должны пойти, чтобы сделать System.Collections one based.

Наконец, есть ли какие-нибудь примеры основанных на одном языке языков в CLR?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Вариант 1: запись записи в вашем списке.Установите для элемента 0 нулевое значение, и все логические индексы начинаются с 1.

Вариант 2. Создайте свою собственную обертку для списка и получите ее получатель и увеличьте индекс.

1 голос
/ 26 января 2011

VB раньше позволял вам указывать базовый индекс массивов, но эта функция никогда не была реализована в VB.NET. Тем не менее, вы можете создавать массивы на основе 1 в CLR, но они будут немного медленнее и в значительной степени несовместимы с другими языками CLR.

...