Как разработать этот метод, если он возвращает многомерные массивы? - PullRequest
2 голосов
/ 12 января 2009

Сейчас я разрабатываю библиотеку SNMP. Проблема вызвана специальной функцией, подобной этой,

*** GetTable (идентификатор строки)

Эта функция может возвращать переменную [,], которая иногда является двумерным массивом, но также переменную [,,] и массивы с большим количеством измерений. Поэтому я считаю, что нет смысла возвращать фиксированный массив, такой как Variable [,], Variable [,,] и т. Д.

Но что же должен возвращать этот метод? Как спроектировать это? А как насчет пользовательских VariableCollection?

Любые предложения приветствуются.

Ответы [ 4 ]

4 голосов
/ 12 января 2009

Как правило, возвращение пользовательского типа обеспечивает большую гибкость в представлении ваших данных. Я также предпочел бы предоставить свои собственные методы доступа к данным в этой коллекции, а не предоставлять многомерные массивы.

Я обычно избегаю использования многомерных прямоугольных массивов самостоятельно. Во многих случаях многомерные зубчатые массивы более удобны, так как вы можете поднять срез изолированно.

1 голос
/ 12 января 2009

Возвращение многомерного массива - рискованный выбор. Я бы предложил реализовать собственную коллекцию вместе с методами для получения информации о ее внутреннем состоянии и методами для получения данных из нее. Он более гибок и менее подвержен ошибкам, когда клиент вызывает ваш метод.

1 голос
/ 12 января 2009

Ну, вы можете вернуть Array и позволить вызывающему абоненту проверить .Rank?

Конечно, возврат массива может быть не самым лучшим вариантом (в зависимости от сценария): Массивы считаются несколько вредными

0 голосов
/ 12 января 2009

При создании публичного Api рекомендуется возвращать строго типизированную коллекцию . Поэтому я бы создал пользовательский объект, который может принимать необходимые данные, которые вы хотите вернуть, а затем использовать .net collection , чтобы вернуть его.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...