New Stuff in Visual Studio 2010, C#, Visual Basic, and .NET Framework 4.0 Visual Studio 2010 Support for the new language F# has been added. Full integrated Team Foundation support. New Extension Manager (with support for accessing the online gallery). Vastly improved IntelliSense support (particularly in VC++). Support for programmable start pages. The program is now more responsive and faster (and fully concurrent). C# Supports optional and named parameters. Visual Basic Automatic line continuation. Anonymous methods. Automatically implemented properties. Simpler collection initializers. Simplified jagged array initializer. Nullable optional parameters. C# and Visual Basic Covariance and contravariance. Dynamic types (from the (Open Source) Dynamic Language Runtime). Improved COM interoperability. .NET Framework 4.0 BigInteger type. Lazy<T> generic type, for thread-safe lazy loading. Save CPU power and memory until you really do need to use the type T. MemoryMappedFile and MemoryMapperViewStream types. Work with very large files and share memory with other processes (IPC). SortedSet<T>. Store unique objects or values in an ordered fashion like a SortedDictionary (but with no key). ISet<T> interface. The generic interface is implemented by all set types like HashSet and SortedSet. Tuple<…> generic types. These are fixed-count collections of any type. Tuple<string, BigInteger, int, byte> would store a string, BigInteger, int, and byte (and in that order). Complex type. This type is for mathematicians working with complex numbers (the kind of number you get when you perform a square root operation on a negative number). The DeflateStream and GZipStream types can now work with more than 4 GB of data so size restrictions are—for all practical purposes—non-existent. File and directory enumeration methods now return the IEnumerable<string> type instead of a (possibly huge) array of string. The Stream type now has a CopyTo(Stream) method so you can copy streams to other streams in one line of code. You can now test your Enum-based types to see if flags are set using Enum.HasFlag(YourEnumType.SomeFlag). String's Concat and Join methods now work with IEnumerable<T>. You can test strings for empty strings with IsNullOrWhiteSpace(String). The StringBuilder type has a Clear method which should be self-explanatory. The Stopwatch type has a Restart method. IObservable<T> generic interface. Task Parallel Library (TPL) and Concurrency and Coordination Runtime. Parallel LINQ (PLINQ) support for most collections (as part of the TPL). Coordination data structures. Get Visual Studio Express editions here.