I am into new desktop app development. I feel at home with .NET 2.0 and c#. I guess I don't need linq, nor care for WPF and other Vista-oid fancy keywords. I also like rather tight and slim 2.0 redistributable, even more for reason it's Vista and 7 included.
I won't convince you to move to 3.5, if you are creating desktop apps for an audience that will find it burdensome to upgrade (e.g. pre-Vista users on slow bandwidth connections). After all the customer comes first.
As mentioned by several others, you can use many new features of the C# compiler even if you target 2.0 (e.g. object initializers, automatic properties), check this out for details. Also, you can use LINQ on 2.0 as well, using the LinqBridge library, which is very small and can be distributed with your app (this is Linq to Objects, not Linq to SQL)
I use 3.5 for my main project at the moment, and there are so many advantages. LINQ, Entity Framework, WPF (especially for databinding), LINQ, extension methods, automatic properties, LINQ, oh and Lambda Expressions (those are awesome)! And did i mention LINQ?
That being said, i still use .NET 2.0 for smaller projects where there isn't much code or anything fancy, such as file conversion utilities or some small tool sitting in the tray for just a few tasks.
I always use the lowest framework version that i can, as long as it fullfills all my requirements. So if it's just a small tool, i might go with 2.0, if i want a nice UI, i use 3.0, and if have a lot of database stuff to do, i use 3.5 SP1 with Entity Framework.
Once you've done a single query on your objects using Linq you'll never go back. Linq isn't just databases, you can have any kind of collection, and if you can express yourself functionally, you can change
foreach (obj in myCollection)
{
if (obj.property == match)
{
foundObj = obj;
break;
}
}
var foundobj =
(from obj in myCollection
where obj.property == match)
.Single()
Which one makes more sense? What about when you want to express much more complex queries like where this and that and that, from that select the ones that match some other property. You can do it in two function calls.
C# 3.0 has some really nice features, such as automatic properties and collection initialisers - both of which really clean your code. Linq is also great when dealing with collections, Lambda expressions are also cool.
If you often use repeater in Asp.Net like controls the ListView control is a much cleaner and easier to work with alternative available to asp.net 3.5.
I also use the routing module from MVC from time to time and find it much better for small sites than something like url rewriting.
I won't convince you to move to 3.5, if you are creating desktop apps for an audience that will find it burdensome to upgrade (e.g. pre-Vista users on slow bandwidth connections). After all the customer comes first.
As mentioned by several others, you can use many new features of the C# compiler even if you target 2.0 (e.g. object initializers, automatic properties), check this out for details. Also, you can use LINQ on 2.0 as well, using the LinqBridge library, which is very small and can be distributed with your app (this is Linq to Objects, not Linq to SQL)
The features I use the most are:
If you haven't used LINQ, and you try it, I think you will find that it (can be) a very powerful tool.
I use 3.5 for my main project at the moment, and there are so many advantages. LINQ, Entity Framework, WPF (especially for databinding), LINQ, extension methods, automatic properties, LINQ, oh and Lambda Expressions (those are awesome)! And did i mention LINQ?
That being said, i still use .NET 2.0 for smaller projects where there isn't much code or anything fancy, such as file conversion utilities or some small tool sitting in the tray for just a few tasks.
I always use the lowest framework version that i can, as long as it fullfills all my requirements. So if it's just a small tool, i might go with 2.0, if i want a nice UI, i use 3.0, and if have a lot of database stuff to do, i use 3.5 SP1 with Entity Framework.
One word:
Linq
Once you've done a single query on your objects using Linq you'll never go back. Linq isn't just databases, you can have any kind of collection, and if you can express yourself functionally, you can change
to
EDIT: OR
Which one makes more sense? What about when you want to express much more complex queries like where this and that and that, from that select the ones that match some other property. You can do it in two function calls.
Sorry about the rant but I really do like Linq.
C# 3.0 has some really nice features, such as automatic properties and collection initialisers - both of which really clean your code. Linq is also great when dealing with collections, Lambda expressions are also cool.
.NET 3.5 is also included within Windows 7.
Question is - Why not?
If you often use repeater in Asp.Net like controls the ListView control is a much cleaner and easier to work with alternative available to asp.net 3.5.
I also use the routing module from MVC from time to time and find it much better for small sites than something like url rewriting.