Digests » 152
LINQ is best learned from examples, but few LINQ resources supply, along with the code, pictures that illustrate what each associated LINQ operator in the code is doing. This article is a visual index of all LINQ operators, that explain clearly with code and illustrations what even the most arcane LINQ operators actually do.
In part 1, we looked at ref locals and ref return, and hinted at a connection to “spans”; this time we’re going to take a deeper look at what this connection might be, and how we can use make use of it.
Imperative programming styles like object oriented programming have capabilities to minimize complexity to a certain level when done right by creating abstractions and hiding complexity.
How many times have you stored something in key/value collection? Most probably it was Dictionary or some kind of implementation of IEnumerable<KeyValuePair<TKey, TValue>>. More than a few times I wanted to store more than one value under single key, most common solution for this situation is Dictionary with collection of some kind as value type, but do you remember about type that was designed just for that and is seen much less often in code?
BenchmarkDotNet for benchmarks; Intel VTune Amplifier for low-level optimizations; mistakes and lessons from performance optimizations: from BCL API usage to advanced data structures, from bit hacks to making code CPU-friendlier.