Disable the Ctrl+Tab Navigator Window in Visual Studio 2008

14 Comments »

One of the many changes in the upgrade to Visual Studio 2008 is how Ctrl+Tab switches between open documents in the IDE.  Ctrl+Tab used to show the previously viewed document.  But in VS 2008, the IDE Navigator window appears as shown below, and you must press Enter to show the previous document.  An additional Enter key doesn’t sound like a big inconvenience, but if you do this hundreds of times each day like most developers, you will quickly find the extra step irritating.  This article describes how to disable the Ctrl+Tab navigator window in Visual Studio 2008.

IDE Navigator

Read the rest of this entry »

Do Not Return Private C# Arrays

2 Comments »

Be careful when returning C# arrays that are private members of an object, as it essentially makes the array contents public, since the client can easily change the array.

Read the rest of this entry »

C# Empty Enumerator

11 Comments »

This article provides C# code for an empty enumerator.  This generic class can be used to simulate enumeration over an empty collection of any type of objects.  Here is the code:

Read the rest of this entry »

C# Programmer Salaries

3 Comments »

Indeed Salary Search is an index of salary information extracted from over 50 million job postings from thousands of unique sources over the last 12 months.  Many job descriptions don’t contain salary information, but there are enough that do to produce statistically significant median salaries.  Following are the salaries for C# developer jobs:

Read the rest of this entry »

Generic Class: Duplicate Method Overloads

4 Comments »

When two overloads of a method in a generic class are the same (have identical type arguments) as a result of the generic type you specified, which method is called?

Read the rest of this entry »

Nested Generics

3 Comments »

Given two generic classes:

public class Type1<T> {}
public class Type2<T> {}

.NET allows you to specify a generic type as the type of another generic type:

Type1<Type2<int>> obj = new Type1<Type2<int>>();

Read the rest of this entry »