Есть ли преимущество использования делегатов в создании выделенной переменной вместо простого использования имени функции?
Этот отрывок из полного примера кода основан на видео Зорана Хорвата «Как FP помог мне лучше понять шаблоны проектирования».
public static PasswordPolicy AtLeast(int length) =>
input => input.Length >= length;
public static PasswordPolicy ContainsUpperLetter =>
input => input.Any(char.IsUpper);
PasswordPolicy minLengthPolicy = AtLeast(8);
PasswordPolicy upperLetterPolicy = ContainsUpperLetter;
PasswordPolicy combinedPolicy = minLengthPolicy // or AtLeast(8)
.And(ContainsUpperLetter) // or upperLetterPolicy
.And(specialCharPolicy);
Если интересно, есть ли какая-либо разница или польза от использования minLengthPolicy и UpperLetterPolicy по сравнению с AtLeast(8) и containsUpperLetter
AtLeast(8)
// versus
minLengthPolicy
// and
.And(ContainsUpperLetter)
// versus
.And(upperLetterPolicy)
Обновление
В комментарии рекомендуется не использовать изображение.
Посмотрите полный пример кода для Netpad или этот отрывок ниже
using static SpecificationDemo;
partial class Program
{
static void Main()
{
string password_a = "Th1s_password_fulfills_pa$$w0rd_p0l1cy";
string password_b = "this_password_does_not_fulfill_password_policy";
// Define individual policies
PasswordPolicy minLengthPolicy = AtLeast(8);
PasswordPolicy upperLetterPolicy = ContainsUpperLetter;
PasswordPolicy lowerLetterPolicy = ContainsLowerLetter;
PasswordPolicy digitPolicy = ContainsDigit;
PasswordPolicy specialCharPolicy = ContainsAny(
characters: new char[] { '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_' });
// Combine policies
PasswordPolicy combinedPolicy = minLengthPolicy
.And(right: ContainsUpperLetter) // or upperLetterPolicy
.And(right: lowerLetterPolicy) // or ContainsLowerLetter
.And(right: digitPolicy)
.And(right: specialCharPolicy);
}
}
``
Подробнее здесь: https://stackoverflow.com/questions/793 ... assignment
Используйте делегат без или с назначением ⇐ C#
Место общения программистов C#
1772111434
Anonymous
Есть ли преимущество использования делегатов в создании выделенной переменной вместо простого использования имени функции?
Этот отрывок из полного примера кода основан на видео Зорана Хорвата «Как FP помог мне лучше понять шаблоны проектирования».
public static PasswordPolicy AtLeast(int length) =>
input => input.Length >= length;
public static PasswordPolicy ContainsUpperLetter =>
input => input.Any(char.IsUpper);
PasswordPolicy minLengthPolicy = AtLeast(8);
PasswordPolicy upperLetterPolicy = ContainsUpperLetter;
PasswordPolicy combinedPolicy = minLengthPolicy // or AtLeast(8)
.And(ContainsUpperLetter) // or upperLetterPolicy
.And(specialCharPolicy);
Если интересно, есть ли какая-либо разница или польза от использования minLengthPolicy и UpperLetterPolicy по сравнению с AtLeast(8) и containsUpperLetter
AtLeast(8)
// versus
minLengthPolicy
// and
.And(ContainsUpperLetter)
// versus
.And(upperLetterPolicy)
Обновление
В комментарии рекомендуется не использовать изображение.
Посмотрите полный пример кода для Netpad или этот отрывок ниже
using static SpecificationDemo;
partial class Program
{
static void Main()
{
string password_a = "Th1s_password_fulfills_pa$$w0rd_p0l1cy";
string password_b = "this_password_does_not_fulfill_password_policy";
// Define individual policies
PasswordPolicy minLengthPolicy = AtLeast(8);
PasswordPolicy upperLetterPolicy = ContainsUpperLetter;
PasswordPolicy lowerLetterPolicy = ContainsLowerLetter;
PasswordPolicy digitPolicy = ContainsDigit;
PasswordPolicy specialCharPolicy = ContainsAny(
characters: new char[] { '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_' });
// Combine policies
PasswordPolicy combinedPolicy = minLengthPolicy
.And(right: ContainsUpperLetter) // or upperLetterPolicy
.And(right: lowerLetterPolicy) // or ContainsLowerLetter
.And(right: digitPolicy)
.And(right: specialCharPolicy);
}
}
``
Подробнее здесь: [url]https://stackoverflow.com/questions/79370681/use-delegate-without-or-with-an-assignment[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия