Generics C#

Sort a List with a Built-in Comparison

This C# program demonstrates how to sort a list with a built-in comparison.

Program.cs

using System;
using System.Collections.Generic;


namespace XoaX {

    public class CComparableChristianMartyr : IComparable<CComparableChristianMartyr> {
        public CComparableChristianMartyr(string sName, int iYearOfMartyrdom) {
            msName = sName;
            miYearOfMartyrdom = iYearOfMartyrdom;
        }
        public string msName;
        public int miYearOfMartyrdom;
        public int CompareTo(CComparableChristianMartyr qOther) {
            if (qOther == null) return 1;
            else return msName.CompareTo(qOther.msName);
        }
    }

    class Program {
        static void Main(string[] args) {
            List<CComparableChristianMartyr> qMartyrs = new List<CComparableChristianMartyr>();
            qMartyrs.Add(new CComparableChristianMartyr("Saint Julian", 250));
            qMartyrs.Add(new CComparableChristianMartyr("Saint Lorenzo Ruiz", 1637));
            qMartyrs.Add(new CComparableChristianMartyr("Saint Apollonius", 305));
            qMartyrs.Add(new CComparableChristianMartyr("Saint Justin Martyr", 165));
            qMartyrs.Add(new CComparableChristianMartyr("Saint Laura", 864));
            qMartyrs.Add(new CComparableChristianMartyr("Saint John Boste", 1594));
            qMartyrs.Add(new CComparableChristianMartyr("Saint Flavius", 300));

            Console.WriteLine("Unsorted:");
            Console.WriteLine("---------");
            foreach (CComparableChristianMartyr qMartyr in qMartyrs) {
                Console.WriteLine(qMartyr.msName + " was martyred in " +
                    qMartyr.miYearOfMartyrdom + " AD");
            }
            Console.WriteLine("");

            // Sort the list using the overridden function
            qMartyrs.Sort();

            Console.WriteLine("Sorted by name:");
            Console.WriteLine("---------------");
            foreach (CComparableChristianMartyr qMartyr in qMartyrs) {
                Console.WriteLine(qMartyr.msName + " was martyred in " +
                    qMartyr.miYearOfMartyrdom + " AD");
            }
            Console.WriteLine("");
        }
    }

}
 

Output

Unsorted:
---------
Saint Julian was martyred in 250 AD
Saint Lorenzo Ruiz was martyred in 1637 AD
Saint Apollonius was martyred in 305 AD
Saint Justin Martyr was martyred in 165 AD
Saint Laura was martyred in 864 AD
Saint John Boste was martyred in 1594 AD
Saint Flavius was martyred in 300 AD

Sorted by name:
---------------
Saint Apollonius was martyred in 305 AD
Saint Flavius was martyred in 300 AD
Saint John Boste was martyred in 1594 AD
Saint Julian was martyred in 250 AD
Saint Justin Martyr was martyred in 165 AD
Saint Laura was martyred in 864 AD
Saint Lorenzo Ruiz was martyred in 1637 AD

Press any key to continue . . .
 
 

© 2007–2024 XoaX.net LLC. All rights reserved.