Pergunta antiga, mas achei isso útil. Acontece que também existe uma classe especializada para um Dicionário usando uma string para a chave e o valor:
private static readonly StringDictionary SegmentSyntaxErrorCodes = new StringDictionary
{
{ "1", "Unrecognized segment ID" },
{ "2", "Unexpected segment" }
};
Edit: De acordo com o comentário de Chris abaixo, usar Dictionary<string, string>over StringDictionaryé geralmente preferido, mas dependerá da sua situação. Se você estiver lidando com uma base de código mais antiga, pode estar limitado a StringDictionary. Além disso, observe que a seguinte linha:
myDict["foo"]
retornará null se myDictfor a StringDictionary, mas uma exceção será lançada no caso de Dictionary<string, string>. Veja o post do SO que ele mencionou para mais informações, que é a fonte desta edição.