Используйте делегат без или с назначениемC#

Место общения программистов C#
Ответить
Anonymous
 Используйте делегат без или с назначением

Сообщение 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);
}
}
``



Подробнее здесь: https://stackoverflow.com/questions/793 ... assignment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»