Метод C #: Как сделать два набора перегрузок?Изменить: параметры, а не перегрузки - PullRequest
0 голосов
/ 04 октября 2018

У меня есть код, который я использую часть его 3 раза с разными перегрузками.

Поэтому перегрузка выглядит так:

    int[] DateCounterReturns = CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);

Два других места, я должен использоватьодин и тот же метод по-разному, и поэтому мне нужны разные перегрузки.Ложь, ложь, 0 выглядит здесь немного преувеличенным, поскольку в этом нет необходимости.

Можно ли сказать методу "вы либо берете три первых перегрузки (здесь они называются answerDay, answerMonth, answerYear)или все 6! "?

Допустим, мне нужно использовать один и тот же метод 30 раз по-разному. Должен ли я затем создавать бесконечный поток перегрузок в одной строке?Или это может быть сгруппировано или отфильтровано таким образом?

1 Ответ

0 голосов
/ 04 октября 2018

Перегрузка в этом случае - это когда мы вызываем один и тот же метод, но с другими параметрами.

У вас есть один базовый DateCounter, который принимает 6 параметров, в которых есть вся ваша логика, но в некоторыхЕсли вас интересуют только день, месяц и год, тогда как остальные 3 параметра могут быть просто значением по умолчанию.Таким образом, эта перегрузка позволяет вам вводить только эти 3 переменные, а затем внутри них вызывать свой основной, базовый метод DateCounter и передавать параметры по умолчанию в виде жестко закодированных значений.

Все, что он делает, избавляет вас от необходимостивведите 3 необязательных параметра.

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear)
{
   return CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);
}

В этом случае последние 3 параметра являются необязательными.На это указывает = {значение}.например, для optionBoolA, если вы не указали значение для него, оно установит его в false.

Затем вы можете просто вызвать его с 3 параметрами

CalendarDateTime.DateCounter(10, 10, 2018);

илиВы также можете заполнить эти значения:

CalendarDateTime.DateCounter(10, 10, 2018, true, true, 1);

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear, bool optionalBoolA = false, bool optionaloolB = false, int optionalIntA = 0);

В более новых версиях c # вы можете использовать этот сокращенный вариант.Это то же самое, что и первый, но c # подключает его для вас.

public int[] CalendarDateTime.DateCounter(int answerDay, int answerMonth, int answerYear) => CalendarDateTime.DateCounter(answerDay, answerMonth, answerYear, false, false, 0);

Когда вы используете Visual Studio и вводите CalendarDateTime.DateCounter (

Он покажет вам, что выперегрузки и с помощью стрелок вверх и вниз покажет вам, какие параметры.

...