Отличным примером C # для декларативного и императивного программирования является LINQ.
С обязательным программированием вы сообщаете компилятору, что вы хотите, шаг за шагом.
Например , давайте начнем с этой коллекции и выберем нечетные числа:
List<int> collection = new List<int> { 1, 2, 3, 4, 5 };
С императивным программированием мы пройдем через это и решим, чего хотим:
List<int> results = new List<int>();
foreach(var num in collection)
{
if (num % 2 != 0)
results.Add(num);
}
Здесь мы говорим:
С декларативным программированием, с другой стороны, вы пишете код, который описывает то, что вы хотите, но не обязательно, как его получить (объявите желаемые результаты, но не шаг за шагом):
var results = collection.Where( num => num % 2 != 0);
Здесь мы говорим «Дайте нам все, где это странно», а не «Пройдите через коллекцию». Проверьте этот элемент, если он нечетный, добавьте его в сбор результатов. "
Во многих случаях код будет представлять собой смесь обоих образцов, так что это не всегда blac K-белый.