Как обойти параметры функции в C #? - PullRequest
0 голосов
/ 09 октября 2018

Я ищу способы обойти параметры функции.Предположим, у меня есть функция:

void getDataFromDB(int? ID, string name) {....}

Я хотел бы знать способы обхода идентификатора или имени, smt, например:

entity.getDataFromDB(42);

или

entity.getDataFromDB("Customer");

Я не буду вызывать функцию следующим образом:

entity.getDataFromDB(null,"Customer");

Я знаю, что могу использовать значения по умолчанию, также я могу использовать params для последнего параметра.Есть хорошие идеи?

Ответы [ 3 ]

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

объединение именованных и необязательных может помочь.

void getDataFromDB(int? ID = null, string name = null) {....}

позволяет

getDataFromDB(ID:42);
getDataFromDB(name:"eric");
0 голосов
/ 10 октября 2018

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

void getDataFromDB(int id) { … }

void getDataFromDB(string name) { … }

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

Лично я бы избегал параметров nullable, так как тогда нам нужно было бы добавить дополнительные проверки null в наш метод.Это открывает двери для потенциальных ошибок.

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

C # имеет два способа уменьшить параметры функции:

значения по умолчанию (работает только в том случае, если «стандартный» параметр не следует):

void getDataFromDB(int? ID, string name = "Default") {....}

Перегрузки метода:

void getDataFromDB(int? ID, string name) {....} 
void getDataFromDB(string name) => getDataFromDB(null, name); // overload using lambda
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...