views:

281

answers:

13

There are quite a few features a .NET developer needs to brush up on to get up to speed.

I am still on 2.0, probably becuase of the industry I work in, where Banks tend to hold back on using bleeding edge technologies (in my experience).

Developers who have experience of .NET 3.0 or greater, what features (both language and frameworks) would you recommend to look at first ?

+1  A: 

First and foremost: LINQ

Andrew Hare
+1 The link explained what I wanted to know for a long time.
Ramesh
+1  A: 

LINQ, LINQ and oh yeah LINQ

AnthonyWJones
+12  A: 

IMHO, the most impactful feature is LINQ and lambda expressions

JaredPar
Is Lambda a .NET thing?
AnthonyWJones
No, but lambda expressions are.
Andrew Hare
Lambda calculus has been around for longer than programming languages... but .NET is arguably the most mainstream platform they've appeared on.
Jon Skeet
That's really two features. But if you take linq as your goal, you need to understand lambda expressions (and closures) to really use it.
Joel Coehoorn
+5  A: 

In 3.0, WCF is probably the most versatile for general usage.

WPF is fine, but is windows/UI specific.

In 3.5, LINQ all the way ;-

Marc Gravell
+4  A: 

Depends on your needs, but I' d say Lambdas and LINQ is very interesting.

A special mention of LINQ-to-objects and LINQ-to-XML, because they show you have query capabilities also outside the DB.

I also think WPF is really cool, and WCF makes interprocess comunication a lot easier.

Arjan Einbu
+1  A: 

LINQ is nifty. The thing to understand about LINQ is that it's not just about databases, it's a collection-querying capability that has ORM bolted onto it with LINQ to SQL and LINQ to Entities.

WPF is interesting.

Object initializers make life SO easy...

MyObject foo = new MyObject() {prop1="foo",prop2="bar"}
Dave Swersky
linq isn't (strictly) a collection querying capability, though you can query collections with it. linq is actually a common declarative syntax for querying *any* datasource for which a provider or extensions have been defined, so xml, objects, relational databases.
flesh
Beg to differ... by itself, LINQ is nothing more than language extensions for querying collections. The Providers (SQL, Entities, XML) connect LINQ to storage-implementation-dependent collections of data/objects.
Dave Swersky
+2  A: 

From C# 3.0: partial methods. They're the single most important feature to grace a programming language, ever.

Nah, I'm kidding: lambda expressions and LINQ will change the way you look at coding. They'll also make you miss them greatly when you have to code for a platform which doesn't have them :(

Jon Skeet
You got me with the first sentence. I must have had a hilarious expression on my face.
JaredPar
+4  A: 

Check out C# auto properties - much simpler concept than LINQ or lambda expressions but will save you a lot of time and hassle!

DrJokepu
A: 

Lambda Expressions, Extension Methods and Object / Collection Initializers.

Tim Lentine
+1  A: 

If you're primarily doing "graphical" things, WPF is probably the best thing to focus on. And don't forget it's "little brother" Silverlight, if you're doing web-based development.

If you've previously done things with .NET Remoting or Web Services, then WCF is definitely the way to go for the future.

If you're doing database type applications, then LINQ (and specifically LINQtoSQL) is what you'll be after. Be careful with the LINQtoSQL, though, could well be replaced with LINQtoENTITIES in the future (as part of the Entity Framework).

Note that LINQ is a much broader technology, though, and can be applied to XML, Objects, in fact, you could write your own provider to allow a LINQ-to-anything if you want! (The authors of the excellent book, Linq In Action write a LINQ-to-Amazon in it, for example).

As a broad technology, LINQ is made possible by other underlying technological improvements like Extension Methods and Lambda Expressions, so if you want to really delve into LINQ, you can learn these, too! This in turn leads onto things like Expression Trees for when you want to really know what's going on "under the covers".

Overall, I'd say LINQ is the best thing to focus on. It's got many multiple uses (i.e. Not focused on one or two specific "areas" of development), is built upon a whole bunch of other technological improvements in the .NET languages, and moreover, will probably be built upon even more in the future (i.e. Lambda expressions are the start of introducing more of a "functional" language into C#!)

CraigTP
A: 

-Object and Collection Initializers
-Implicit variables
-Auto properties (LOVE EM!!)

Pat
A: 

Windows Workflow Foundation (WF)

Particularly if you have long running processes which the business like to change.

(One caveat, it is getting a major revamp with .NET 4, but with backwards compatibility.)

Richard
A: 

There are 4 new language features that are particularly important. The language is the foundation of everything you can (and can't) do as a developer, and therefore understanding these 4 important new language features is very important.

The 4 features I'm talking about are:

  1. Extension methods
  2. Lambda expressions
  3. Implicitly typed local variables
  4. Anonymous types

(Note: There are other new language features as well, and they're important of course. But these 4 are the foundational ones I would start with).

Now, it just so happens that LINQ is based mostly on these 4 features. But don't let that throw you off course. If you really want to master C# 3.0, you need to understand each of these language features deeply, apart from their usage in Linq.

Once you've done that, you're in a fantastic position to do 2 things:

  1. Utilize C# 3.0 to write some powerful code
  2. Actually understand Linq.

Enjoy it! C# 3.0 is a beautiful thing.

Charlie Flowers