¿Por qué no puedo comparar un KeyValuePair <TKey, TValue> con el predeterminado
In .Net 2.5 Por lo general, puedo obtener una comparación de igualdad (==) entre un valor y su tipo predeterminado
if (myString == default(string))
in embargo, obtengo la siguiente excepción cuando intento ejecutar una comparación de igualdad en un KeyValuePair predeterminado y un KeyValuePair
Code Sample (desde un método de pre-extensión, clase ListUtilities estática proto-lambda :))
public static TKey
FirstKeyOrDefault<TKey, TValue>(Dictionary<TKey, TValue> lookups,
Predicate<KeyValuePair<TKey, TValue>> predicate)
{
KeyValuePair<TKey, TValue> pair = FirstOrDefault(lookups, predicate);
return pair == default(KeyValuePair<TKey, TValue>) ?
default(TKey) : pair.Key;
}
Excepción
Operator '==' no se puede aplicar a operandos de tipo 'System.Collections.Generic.KeyValuePair <string, object>' y 'System.Collections.Generic.KeyValuePair <string, object>'
¿Es porque, como estructura, KeyValuePair no es anulable? Si este es el caso, ¿por qué, ya que, presumiblemente, se implementó el valor predeterminado para manejar tipos no anulables?
EDITA
Para el registro, elegí @Chris Hannon como respuesta seleccionada, ya que me dio lo que estaba buscando, la opción más elegante y una explicación sucinta, sin embargo, animo a leer @Dasuraga para obtener una explicación muy completa de por qué esto es el cas