Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Use ReadOnlyCollection to wrap a collection

using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Text; using System.Runtime.Serialization; public class Customer : System.IComparable {     private int _id;     private string _name;     private string _rating;     private static SortOrder _order;     public enum SortOrder {         Ascending = 0,         Descending = 1     }     public Customer(int id, string name)         : this(id, name, "Other") {     }     public Customer(int id, string name, string rating) {         this._id = id;         this._name = name;         this._rating = rating;     }     public int Id {         get { return this._id; }         set { this._id = value; }     }     public string Name {         get { return this._name; }         set { this._name = value; }     }     public string Rating {         get { return this._rating; }         set { this._rating = value; }     }     public static SortOrder Order {         get { return _order; }         set { _order = value; }     }     public override bool Equals(Object obj) {         bool retVal = false;         if (obj != null) {             Customer custObj = (Customer)obj;             if ((custObj.Id == this.Id) &&                 (custObj.Name.Equals(this.Name) &&                 (custObj.Rating.Equals(this.Rating))))                 retVal = true;         }         return retVal;     }     public override string ToString() {         return this._id + ": " + this._name;     }     public int CompareTo(Object obj) {         switch (_order) {             case SortOrder.Ascending:                 return this.Name.CompareTo(((Customer)obj).Name);             case SortOrder.Descending:                 return (((Customer)obj).Name).CompareTo(this.Name);             default:                 return this.Name.CompareTo(((Customer)obj).Name);         }     } } class Program {     public static void Main(){         List<Customer> collCustList = new List<Customer>();         collCustList.Add(new Customer(99, "H", "P"));         collCustList.Add(new Customer(77, "B", "G"));         collCustList.Add(new Customer(55, "B", "G"));         collCustList.Add(new Customer(88, "B", "P"));         collCustList.Add(new Customer(11, "L", "O"));         ReadOnlyCollection<Customer> roCustColl = new ReadOnlyCollection<Customer>(collCustList);         Customer tmpCust = roCustColl[1];         tmpCust.Name = "NAME CHANGED";         foreach (Customer cust in roCustColl)             Console.Out.WriteLine(cust);     } }