<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Collections</id>
		<title>Csharp/C Sharp/Generics/Generic Collections - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Collections"/>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Collections&amp;action=history"/>
		<updated>2026-04-17T10:05:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Collections&amp;diff=1352&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Collections&amp;diff=1352&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Collections&amp;diff=1353&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Collections&amp;diff=1353&amp;oldid=prev"/>
				<updated>2010-05-26T11:45:45Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Add Collection Items with IComparable interface implementation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
&lt;br /&gt;
public class Customer : System.IComparable {&lt;br /&gt;
    private int _id;&lt;br /&gt;
    private string _name;&lt;br /&gt;
    private string _rating;&lt;br /&gt;
    private static SortOrder _order;&lt;br /&gt;
    public enum SortOrder {&lt;br /&gt;
        Ascending = 0,&lt;br /&gt;
        Descending = 1&lt;br /&gt;
    }&lt;br /&gt;
    public Customer(int id, string name)&lt;br /&gt;
        : this(id, name, &amp;quot;Other&amp;quot;) {&lt;br /&gt;
    }&lt;br /&gt;
    public Customer(int id, string name, string rating) {&lt;br /&gt;
        this._id = id;&lt;br /&gt;
        this._name = name;&lt;br /&gt;
        this._rating = rating;&lt;br /&gt;
    }&lt;br /&gt;
    public int Id {&lt;br /&gt;
        get { return this._id; }&lt;br /&gt;
        set { this._id = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public string Name {&lt;br /&gt;
        get { return this._name; }&lt;br /&gt;
        set { this._name = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public string Rating {&lt;br /&gt;
        get { return this._rating; }&lt;br /&gt;
        set { this._rating = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public static SortOrder Order {&lt;br /&gt;
        get { return _order; }&lt;br /&gt;
        set { _order = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public override bool Equals(Object obj) {&lt;br /&gt;
        bool retVal = false;&lt;br /&gt;
        if (obj != null) {&lt;br /&gt;
            Customer custObj = (Customer)obj;&lt;br /&gt;
            if ((custObj.Id == this.Id) &amp;amp;&amp;amp;&lt;br /&gt;
                (custObj.Name.Equals(this.Name) &amp;amp;&amp;amp;&lt;br /&gt;
                (custObj.Rating.Equals(this.Rating))))&lt;br /&gt;
                retVal = true;&lt;br /&gt;
        }&lt;br /&gt;
        return retVal;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return this._id + &amp;quot;: &amp;quot; + this._name;&lt;br /&gt;
    }&lt;br /&gt;
    public int CompareTo(Object obj) {&lt;br /&gt;
        switch (_order) {&lt;br /&gt;
            case SortOrder.Ascending:&lt;br /&gt;
                return this.Name.rupareTo(((Customer)obj).Name);&lt;br /&gt;
            case SortOrder.Descending:&lt;br /&gt;
                return (((Customer)obj).Name).rupareTo(this.Name);&lt;br /&gt;
            default:&lt;br /&gt;
                return this.Name.rupareTo(((Customer)obj).Name);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class CollectionTest {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Collection&amp;lt;Customer&amp;gt; custColl = new Collection&amp;lt;Customer&amp;gt;();&lt;br /&gt;
        custColl.Add(new Customer(1, &amp;quot;S&amp;quot;));&lt;br /&gt;
        custColl.Add(new Customer(2, &amp;quot;K&amp;quot;));&lt;br /&gt;
        custColl.Add(new Customer(3, &amp;quot;T&amp;quot;));&lt;br /&gt;
        custColl.Insert(1, new Customer(4, &amp;quot;Inserted Employee&amp;quot;));&lt;br /&gt;
        custColl[3] = new Customer(9, &amp;quot;F&amp;quot;);&lt;br /&gt;
        foreach (Customer cust in custColl)&lt;br /&gt;
            Console.Out.WriteLine(cust);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add object in a hierarchy into a generic Collection==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
public class Chicken : Animal {&lt;br /&gt;
    public void LayEgg() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0} Animal.&amp;quot;, name);&lt;br /&gt;
    }&lt;br /&gt;
    public Chicken(string newName)&lt;br /&gt;
        : base(newName) {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Cow : Animal {&lt;br /&gt;
    public void Milk() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0} cow.&amp;quot;, name);&lt;br /&gt;
    }&lt;br /&gt;
    public Cow(string newName)&lt;br /&gt;
        : base(newName) {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public abstract class Animal {&lt;br /&gt;
    protected string name;&lt;br /&gt;
    public string Name {&lt;br /&gt;
        get {&lt;br /&gt;
            return name;&lt;br /&gt;
        }&lt;br /&gt;
        set {&lt;br /&gt;
            name = value;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public Animal() {&lt;br /&gt;
        name = &amp;quot;animal&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    public Animal(string newName) {&lt;br /&gt;
        name = newName;&lt;br /&gt;
    }&lt;br /&gt;
    public void Feed() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0} is feeding.&amp;quot;, name);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Collection&amp;lt;Animal&amp;gt; animalCollection = new Collection&amp;lt;Animal&amp;gt;();&lt;br /&gt;
        animalCollection.Add(new Cow(&amp;quot;A&amp;quot;));&lt;br /&gt;
        animalCollection.Add(new Chicken(&amp;quot;B&amp;quot;));&lt;br /&gt;
        foreach (Animal myAnimal in animalCollection) {&lt;br /&gt;
            myAnimal.Feed();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add user-defined object to generic Collection==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class Team {&lt;br /&gt;
    private string name;&lt;br /&gt;
    public Team(string name) {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Collection&amp;lt;Team&amp;gt; teams = new Collection&amp;lt;Team&amp;gt;();&lt;br /&gt;
        teams.Add(new Team(&amp;quot;Ferrari&amp;quot;));&lt;br /&gt;
        teams.Add(new Team(&amp;quot;Williams-BMW&amp;quot;));&lt;br /&gt;
        teams.Add(new Team(&amp;quot;Bar-Honda&amp;quot;));&lt;br /&gt;
        teams.Add(new Team(&amp;quot;McLaren-Mercedes&amp;quot;));&lt;br /&gt;
        foreach (Team t in teams) {&lt;br /&gt;
            Console.WriteLine(t);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic Collection and List==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
public class CollectionTest {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Collection&amp;lt;int&amp;gt; intCollection = new Collection&amp;lt;int&amp;gt;();&lt;br /&gt;
        List&amp;lt;String&amp;gt; strList = new List&amp;lt;String&amp;gt;();&lt;br /&gt;
        strList.Add(&amp;quot;Val1&amp;quot;);&lt;br /&gt;
        strList.Add(&amp;quot;Val2&amp;quot;);&lt;br /&gt;
        Collection&amp;lt;String&amp;gt; strCollection = new Collection&amp;lt;String&amp;gt;(strList);&lt;br /&gt;
        foreach (String strVal1 in strCollection)&lt;br /&gt;
            System.Console.WriteLine(strVal1);&lt;br /&gt;
        strList[0] = &amp;quot;Val Changed&amp;quot;;&lt;br /&gt;
        foreach (String strVal2 in strCollection)&lt;br /&gt;
            System.Console.WriteLine(strVal2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic collection class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
public class Bag&amp;lt;T&amp;gt; {&lt;br /&gt;
    private List&amp;lt;T&amp;gt; items = new List&amp;lt;T&amp;gt;();&lt;br /&gt;
    public void Add(T item) {&lt;br /&gt;
        items.Add(item);&lt;br /&gt;
    }&lt;br /&gt;
    public T Remove() {&lt;br /&gt;
        T item = default(T);&lt;br /&gt;
        if (items.Count != 0) {&lt;br /&gt;
            Random r = new Random();&lt;br /&gt;
            int num = r.Next(0, items.Count);&lt;br /&gt;
            item = items[num];&lt;br /&gt;
            items.RemoveAt(num);&lt;br /&gt;
        }&lt;br /&gt;
        return item;&lt;br /&gt;
    }&lt;br /&gt;
    public T[] RemoveAll() {&lt;br /&gt;
        T[] i = items.ToArray();&lt;br /&gt;
        items.Clear();&lt;br /&gt;
        return i;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main(string[] args) {&lt;br /&gt;
        Bag&amp;lt;string&amp;gt; bag = new Bag&amp;lt;string&amp;gt;();&lt;br /&gt;
        bag.Add(&amp;quot;D&amp;quot;);&lt;br /&gt;
        bag.Add(&amp;quot;B&amp;quot;);&lt;br /&gt;
        bag.Add(&amp;quot;G&amp;quot;);&lt;br /&gt;
        bag.Add(&amp;quot;M&amp;quot;);&lt;br /&gt;
        bag.Add(&amp;quot;N&amp;quot;);&lt;br /&gt;
        bag.Add(&amp;quot;I&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Item 1 = {0}&amp;quot;, bag.Remove());&lt;br /&gt;
        Console.WriteLine(&amp;quot;Item 2 = {0}&amp;quot;, bag.Remove());&lt;br /&gt;
        Console.WriteLine(&amp;quot;Item 3 = {0}&amp;quot;, bag.Remove());&lt;br /&gt;
        Console.WriteLine(&amp;quot;Item 4 = {0}&amp;quot;, bag.Remove());&lt;br /&gt;
        string[] s = bag.RemoveAll();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sort by Name==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
&lt;br /&gt;
public class Employee : System.IComparable {&lt;br /&gt;
    private int _id;&lt;br /&gt;
    private string _name;&lt;br /&gt;
    private string _rating;&lt;br /&gt;
    private static SortOrder _order;&lt;br /&gt;
    public enum SortOrder {&lt;br /&gt;
        Ascending = 0,&lt;br /&gt;
        Descending = 1&lt;br /&gt;
    }&lt;br /&gt;
    public Employee(int id, string name)&lt;br /&gt;
        : this(id, name, &amp;quot;Other&amp;quot;) {&lt;br /&gt;
    }&lt;br /&gt;
    public Employee(int id, string name, string rating) {&lt;br /&gt;
        this._id = id;&lt;br /&gt;
        this._name = name;&lt;br /&gt;
        this._rating = rating;&lt;br /&gt;
    }&lt;br /&gt;
    public int Id {&lt;br /&gt;
        get { return this._id; }&lt;br /&gt;
        set { this._id = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public string Name {&lt;br /&gt;
        get { return this._name; }&lt;br /&gt;
        set { this._name = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public string Rating {&lt;br /&gt;
        get { return this._rating; }&lt;br /&gt;
        set { this._rating = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public static SortOrder Order {&lt;br /&gt;
        get { return _order; }&lt;br /&gt;
        set { _order = value; }&lt;br /&gt;
    }&lt;br /&gt;
    public override bool Equals(Object obj) {&lt;br /&gt;
        bool retVal = false;&lt;br /&gt;
        if (obj != null) {&lt;br /&gt;
            Employee custObj = (Employee)obj;&lt;br /&gt;
            if ((custObj.Id == this.Id) &amp;amp;&amp;amp;&lt;br /&gt;
                (custObj.Name.Equals(this.Name) &amp;amp;&amp;amp;&lt;br /&gt;
                (custObj.Rating.Equals(this.Rating))))&lt;br /&gt;
                retVal = true;&lt;br /&gt;
        }&lt;br /&gt;
        return retVal;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return this._id + &amp;quot;: &amp;quot; + this._name;&lt;br /&gt;
    }&lt;br /&gt;
    public int CompareTo(Object obj) {&lt;br /&gt;
        switch (_order) {&lt;br /&gt;
            case SortOrder.Ascending:&lt;br /&gt;
                return this.Name.rupareTo(((Employee)obj).Name);&lt;br /&gt;
            case SortOrder.Descending:&lt;br /&gt;
                return (((Employee)obj).Name).rupareTo(this.Name);&lt;br /&gt;
            default:&lt;br /&gt;
                return this.Name.rupareTo(((Employee)obj).Name);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class CollectionTest {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        List&amp;lt;Employee&amp;gt; collCustList = new List&amp;lt;Employee&amp;gt;();&lt;br /&gt;
        collCustList.Add(new Employee(99, &amp;quot;H&amp;quot;, &amp;quot;P&amp;quot;));&lt;br /&gt;
        collCustList.Add(new Employee(77, &amp;quot;B&amp;quot;, &amp;quot;G&amp;quot;));&lt;br /&gt;
        collCustList.Add(new Employee(55, &amp;quot;B&amp;quot;, &amp;quot;G&amp;quot;));&lt;br /&gt;
        collCustList.Add(new Employee(88, &amp;quot;B&amp;quot;, &amp;quot;P&amp;quot;));&lt;br /&gt;
        collCustList.Add(new Employee(11, &amp;quot;L&amp;quot;, &amp;quot;O&amp;quot;));&lt;br /&gt;
        foreach (Employee cust in collCustList)&lt;br /&gt;
            Console.Out.WriteLine(cust);&lt;br /&gt;
        Employee.Order = Employee.SortOrder.Ascending;&lt;br /&gt;
        collCustList.Sort(delegate(Employee cust1, Employee cust2) {&lt;br /&gt;
            return Comparer&amp;lt;Employee&amp;gt;.Default.rupare(cust1, cust2);&lt;br /&gt;
        });&lt;br /&gt;
        foreach (Employee cust in collCustList)&lt;br /&gt;
            Console.Out.WriteLine(cust);&lt;br /&gt;
        Employee.Order = Employee.SortOrder.Descending;&lt;br /&gt;
        collCustList.Sort(delegate(Employee cust1, Employee cust2) {&lt;br /&gt;
            return Comparer&amp;lt;Employee&amp;gt;.Default.rupare(cust1, cust2);&lt;br /&gt;
        });&lt;br /&gt;
        foreach (Employee cust in collCustList)&lt;br /&gt;
            Console.Out.WriteLine(cust);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>