Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Лямбда выражение как значение по-умолчанию

#c_sharp #lambda


Надо в GetPersons как значение по-умолчанию передать функцию, всегда возвращающую
true, хочется сделать лямбда-выражением. Что тут не так?
        public IEnumerable GetPersons(Choise func = x => true)
        {
            foreach (var u in ManageUsers.GetUsers())
            {
                Person person = new Person();
                person.ImportProperties(u);
                if (func(person))
                {
                    yield return person;
                }
            }
        }

        private delegate bool Choise(Person person);
    


Ответы

Ответ 1



Ещё вариант - использовать в качестве значения по умолчанию null: public IEnumerable GetPersons(Choise func = null) { foreach (var u in ManageUsers.GetUsers()) { Person person = new Person(); person.ImportProperties(u); if ((func ?? (x=>true))(person)) { yield return person; } } }

Ответ 2



Нельзя так делать. Выход из ситуации - перегрузка без параметров.

Комментариев нет:

Отправить комментарий