Summary
We discussed that, by being lazy, we can create efficient code. Lazy enumeration is useful when we need to iterate an infinite loop so that it will not overflow since the MoveNext()
method in IEnumerator
will be run only if asked. Also, lazy evaluation makes our code run faster because the compiler does not need to check all Boolean expressions if one of them has given the result.
In nonstrict evaluation, we treat a function in programming like we treat a mathematical function. Using this evaluation technique, we use the functional approach to solve the function.
We have also become acquainted with the lazy initialization provided by the Lazy<T>
class to defer the object's initialization, which means that we can define an object but it won't be initialized if the member of the object has not been accessed yet.
To optimize our code, we discussed caching techniques using precomputation and memoization. In precomputation, we prepare something like a lookup table so we don't need...