Есть и другие вопросы, такие как KeyValuePair vs. IDictionary, но я чувствую, что это немного отличается.
 NameValueCollection принимает строковый ключ и строковое значение.
 KeyValuePair похож на словарь, вы говорите ему, какой тип ключ и значение.
Я не понимаю, почему NameValueCollection существует. Инициализация KeyValuePair со строками типа кажется достаточной. Я также заметил, что NameValueCollection имеет несколько доступных ему методов, но опять же, почему бы не объединить оба класса в один?
