New CSharp Language features 3.0 and 4.0

From OpenPetra Wiki
Revision as of 14:16, 26 October 2011 by Christiankatict (talk | contribs)
Jump to navigation Jump to search

New features

C# 3.0

Implicitly Typed Local Variables (aka 'Local Variable Type Inference')

  • At first glance this feature looks like it does what the 'dreaded' VARIANT Type of Visual Basic 6 does, where it results in late-bound Type Inference which can cause very difficult-to-spot errors at runtime.
  • However, Implicitly Typed Local Variables result in early-bound strongly-typed code, which is way better as its VB 6 'colleague' as it can not cause those errors at run-time!
  • Only works for local variables in a method (that is, not for Class Fields or Method Arguments).
  • Usage
    • Use new var keyword for the declaration of such variables.
    • Should not be over-used as the source code is less explicit then when the Type it holds is stated explicitly.
    • Can be a time saver for declaration of long types, esp. Generic ones; there it fine to be used and actually can result in easier-to-read code.
  • Details: [1]

Anonymous Types

Auto-implemented Properties (aka 'Automatic Properties')

  • used already in the web server for conference backend. saves writing dumb code

Object Initializers

  • used by ext.net which is used by the web server for conference backend.

Collection Initializers, Dictionary Initializers

Partial Methods

  • Available in Partial Classes only.

Extension Methods

Lambda Expressions

  • Replace Anonymous Methods, which were new in C# 2.0.

LINQ

C# 4.0

Named Parameters

  • This looks most interesting for us.

Optional Parameters

  • This looks very interesting for us, too.

Dynamic Support

Variance

COM Interop

  • Probably not interesting for us as the OpenPetra Client should stay platform-independent (COM is available only on Windows OS's).
  • Could potentially be useful for optional plug-ins for the OpenPetra Client that would need COM to fulfill their roles, though. Obviously those plug-ins would work on only Windows OS's then.


Mono and new C# features

TODO