01: using System; 02: using System.Collections.Generic; 03: 04: namespace Test 05: { 06: public abstract class GenericClass<T> 07: { 08: internal T id; 09: 10: public T Id 11: { 12: get 13: { 14: return id; 15: } 16: set 17: { 18: id = value; 19: } 20: } 21: public override int GetHashCode() 22: { 23: return id.GetHashCode(); 24: } 25: public override bool Equals(object obj) 26: { 27: return this == obj 28: || (((object)(id as GenericClass<T>) == null) 29: && Equals0((GenericClass<T>)obj)); 30: } 31: public bool Equals(GenericClass<T> obj) 32: { 33: return this == obj || Equals0(obj); 34: } 35: private bool Equals0(GenericClass<T> obj) 36: { 37: return id.Equals(obj.id); 38: } 39: } 40: 41: public abstract class GenericClassComparable<T> : GenericClass<T>, 42: IComparable<GenericClassComparable<T>> where T : IComparable<T> 43: { 44: public int CompareTo(GenericClassComparable<T> o) 45: { 46: return id.CompareTo(o.id); 47: } 48: } 49: } 50:
Explicacion:
06-06: Declaracion de utilizacion del uso de generics
08-08: Declaracion del id.
10-20: Declaracion de los accesors para el id.
21-24: Definicion de la funcion GetHashCode, empleando las funciones propias del atributo id.
25-38: Definicion de multiples funciones Equals.
41-42: Declaracion del uso de IComparable
44-47: Definicion de la funcion CompareTo
Optimizacion:
- El uso de esta clase, permite utilizar automaticamente las funciones Sort y BinarySearch, de la clase Array, asi como la clase Hashtable
No hay comentarios.:
Publicar un comentario