Если вы хотите написать «функциональный» код на c # - используйте методы расширения LINQ
var valuesToPrint =
Enumerable.Range(start, end - start)
.Where(value => number % 2 == 0)
.Select(value => value.ToString());
var output = String.Join(Environment.NewLine, valuesToPrint)
// Console is external resource (aka global state)
Console.WriteLine(output);
Если вы большой поклонник LINQ, вы можете создать вывод с .Aggregate
методом расширения
var output =
Enumerable.Range(start, end - start)
.Where(value => number % 2 == 0)
.Aggregate(new StringBuilder(),
(builder, value) => builder.AppendLine(value),
builder => builder.ToString());
Console.Write(output);
Некоторые утверждают, что Aggregate
с StringBuilder
не является чисто функциональным, потому что мы обновляем внутреннее состояние того же экземпляра StringBuilder
.