¿Cuál es el valor de usar IDictionary aquí?IDictionary <string, string> versus Dictionary <string, string>
Respuesta
El valor de usar una interfaz es siempre el mismo: no es necesario cambiar el código de cliente cuando se cambia a otra implementación de back-end.
Considere que el perfil de su código muestra más adelante que una implementación de tabla hash (utilizada en la clase Dictionary
) no es adecuada para su tarea y que un árbol de búsqueda binaria funcionaría mejor. Si ha codificado a una interfaz, cambiar la implementación es sencillo. Sin embargo, si has usado una clase concreta, tienes que cambiar mucho más código en muchos lugares más. => Esto cuesta tiempo y dinero.
IDictionary permite un acoplamiento más flexible.
Digamos que tienes un método como este:
void DoSomething(IDictionary<string, string> d)
{
//...
}
Usted puede utilizar de esta manera:
Dictionary<string, string> a = new Dictionary<string, string>();
SortedDictionary<string, string> b = new SortedDictionary<string, string>();
DoSomething(a);
DoSomething(b);
En base a su pregunta anterior Class inherits generic dictionary<string, IFoo>
and Interface y la discusión de las respuestas, supongo tu preguntando más sobre heredar de en lugar de usar.
La implementación del diccionario está bien si está satisfecho con la forma en que se implementa el diccionario. Si quiere cambiar algo, entonces implementar IDictionary es mejor.
En mi humilde opinión, si va a cubrir un miembro existente con 'nuevo', entonces es mejor implementar la interfaz en lugar de heredar de la clase original.
- 1. StringDictionary vs Dictionary <string, string>
- 2. Cómo convertir Dictionary <string, object> a Dictionary <string, string> en C#
- 3. C# cast Dictionary <string, AnyType> to Dictionary <string, Object> (Involving Reflection)
- 4. ¿Por qué no puedo crear un diccionario <string, dictionary <string, string >>?
- 5. LINQ - Lista de giros en <string> Dictionary <string, string>
- 6. C# Convert List <string> a Dictionary <string, string>
- 7. Cómo convertir clases en Dictionary <string, string>?
- 8. ¿Cómo hacer comparación de valores entre dos Dictionary <string, lista <string>> objetos
- 9. Cómo reemplazar mayúsculas y minúsculas en IDictionary <string, string>
- 10. Cómo direccionar IDictionary <string, Entidad> Fluido en NHibernate
- 11. DataContractSerializer y Dictionary <string, object> falla al leer
- 12. Agregar SortedList o Dictionary <int, string> a ResourceDictionary
- 13. JAXB para unmarshall <string> foobar</string>
- 14. Map <String, String> JSON en
- 15. casting ArrayList <String> a String []
- 16. JPA Map <String, String> mapping
- 17. ¿Cómo serializar Dictionary <string, string> a través de WCF?
- 18. Envío de una matriz JSON para ser recibido como un Dictionary <string, string>
- 19. Haga nuestra propia lista <string, string, string>
- 20. Uso FlurryAgent.onEvent (String EVENTID, mapa <String, String> Parámetros)
- 21. ¿Convertir Diccionario <String,Int> al Diccionario <String, SomeEnum> using LINQ?
- 22. Cómo convertir Map <String, String> a Map <Long, String> usando guava
- 23. IDictionary <,> contravariancia?
- 24. ¿Qué significa el Diccionario <string, />?
- 25. ¿Cómo puedo convertir un DataTable a un IEnumerable <Dictionary <string, object >>?
- 26. No se puede convertir un HashMap <String, String> en una interfaz que extiende Map <String, String>
- 27. Hibernate, Lista <String>
- 28. ¿<String> hace algo?
- 29. Comparar Lista <String[]>
- 30. PHP usando Gettext dentro de <<< string EOF
Buen ejemplo para mostrar la diferencia – Karan