Что-то , где-то будет цикл. Вам не нужно зацикливаться на вашем коде, но что-то понадобится.
Я не могу придумать ничего лишнего, что изменит все элементы в списке, но с помощью LINQ вы можете легко создать new List<int>
:
var plusThree = originalList.Select(x => x + 3).ToList();
или pre-LINQ (и немного более эффективный, но также более специфичный List<T>
):
var plusThree = originalList.ConvertAll(x => x + 3);
Но оба эти будут зацикливаться за кулисами.
Вы могли бы потенциально создать проекционную реализацию IList<T>
, в которой лениво применили проекцию (или, возможно, биекцию, если вы хотите быть по-настоящему причудливой) ... но это будет значительный объем работы.