This is a discussion that pops a from time to time in our team. While a few quickly learned C# 3.0 features, other stick with classical techniques.
Some never use Linq, think that lambda expressions are confusing and yield is "scary". Sometimes they can hardly understand code that is written by people using all the new features. We can just say that they do not master the language and should learn it.
But how hard should it be to learn a modern programming language? Everyone can solve the problems, everyone has many other problems to solve every day than to care about nicer ways to implement it. Training people is not for free. On the other hand, language features can make people more productive and code more maintainable.
Probably incomplete list of C# features
- classes, structs, primitive types, arrays, boxing, interfaces, inheritance (abstract, virtual, new, sealed), properties, nullables
- exceptions
- generics
- multi threading, locks
- reflection
- delegates, events, anonymous delegates
- iterators
- lambda expressions
- extension methods
- linq
Version 4 is coming soon including many additional features.
Personally I like almost every feature of C# and like the short and nice code I can write with this language. But I don't have to learn it from scratch.
I'm interested in your opinion and your experience with learning or teaching C#. Are there already too many features? Are still important features missing? Are the language features making the language easier to use or just harder to learn?
Please: No answers like "Language A is better than language B because...".