1. The overall vision: learn from Java's mistakes, keep the good, ditch the bad
2. The focus on readability and ease of learning/use
3. Static Typing (find errors at compile time, not run time)
4. No “special” types, everything is an object
5. Named and Optional parameters (C# 4.0)
6. Nullable types (C# 2.0)
7. No need for explicit getter/setters until you are ready for them (C# 3.0)
8. Type inference via the "local" keyword (C# 3.0 "var")
9. Sequences (arrays) and their accompanying syntactic sugariness (C# 3.0)
10. Straight-forward implementation of higher-order functions
Things that may grow on me
1. The new assignment operator ":="
2. The new string interpolation syntax
3. The new types: Natural, Numeric, etc
4. Classes, Methods and Attributes looking almost identical...can't decide if that is good or bad
Things that make me go hmmm
1. All the new keywords for existing concepts: shared, satisfies, assign, variable, local
2. The simplification of the public/protected/private access/visibility levels
3. The Smalltalk-like syntax for inline functions as parameters
Things I didn't fully get
1. The Closure and block structure examples had some things that were a little puzzling. e.g. the "name" attribute of type "Name" returns "Name(“Gavin”, “King”)"
2. Some of the more intricate details of the type system..