C # Возвращая типы из метода - PullRequest
1 голос
/ 25 января 2011

Если у меня есть метод, который возвращает сетку данных, и поток похож на это:

if (ds.Tables.Count == 0)
        {
            SharedMethods.updateStatus("There are no excluded results to display");
            //return dgv;
        }
        else
        {
            dgv.DataSource = ds.Tables[0];
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            dgv.AllowUserToAddRows = false;

            return dgv;
        }

Если условие if истинно, я не хочу возвращать сетку данных (так как нет данных), что я могу вернуть в этом случае?Если я возвращаю ноль, то вызывающий метод имеет нулевое представление данных, которое вызывает дальнейшие проблемы.

Спасибо.

Ответы [ 5 ]

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

Вы можете установить тип возврата метода для возврата кода ошибки (enum) и иметь DataGridView в качестве параметра out или ref.

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

Вы можете

  1. бросить исключение
  2. null и добавьте специальную обработку для null вызывающей стороне
  3. Если DataGridView поддерживает это, пустой список

Обычно вы используете 3) с IEnumerables<T>, но я не знаю, поддерживает ли ваш тип возвращаемого значения. Это решение лучше всего подходит, если вы хотите, чтобы в первом случае вы вели себя так же, как если бы вы не получили результатов по вашему запросу.

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

Просто установите для свойства Visible сетки значение false, если вам нечего показать.

0 голосов
/ 25 января 2011

Я бы не вернул ничего из метода привязки данных.Зачем тебе это надо?(Этот код даже не скомпилируется, потому что истинному блоку возвращать нечего.)

Просто сделайте его методом.

0 голосов
/ 25 января 2011

На мой взгляд, у вас есть два решения:

  1. Вернуть ноль DataGridView и изменить код вызова с этим.

  2. Верните DataGridView, но с нулевым DataSource (поскольку данных нет) и убедитесь, что ваш вызывающий код может справиться с этим.

Лично я бы пошел с 2. У вас все еще есть представление , но нет данных , поэтому вам все еще нужно DataGridView, но оно пустое.

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