Array sorting

using System;
using System.Collections;

namespace ArrayListSORTING
{
    public enum SortDirection
    {
        Asc,
        Desc
    }
    public class CategoryComparer : IComparer
    {
        private SortDirection m_direction = SortDirection.Asc;
        public CategoryComparer() : base() { }
        public CategoryComparer(SortDirection direction)
        {
            this.m_direction = direction;
        }
        int IComparer.Compare(object x, object y)
        {
            Category categoryX = (Category) x;
            Category categoryY = (Category) y;
            if (categoryX == null && categoryY == null)
            {
                return 0;
            }
            else if (categoryX == null && categoryY != null)
            {
                return (this.m_direction == SortDirection.Asc) ? -1 : 1;
             }
             else if (categoryX != null && categoryY == null)
             {
                 return (this.m_direction == SortDirection.Asc) ? 1 : -1;
             }
             else
             {
                 return (this.m_direction == SortDirection.Asc) ?
                 yX.TypeCode.CompareTo(categoryY.TypeCode) :
                 categoryY.TypeCode.CompareTo(categoryX.TypeCode);
            }
        }
    }
}
 
using System;
using System.Collections;

namespace ArrayListSORTING
{
    class SortArrayList
    {
        [STAThread]
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            list.Add(new Category("Music", 4));
            list.Add(new Category("Play", 7));
            list.Add(new Category("Dance", 2));
            list.Add(new Category("Party", 9));
            list.Add(new Category("Disco", 1));
            list.Add(new Category("Sport", 3));
            list.Sort(new CategoryComparer());
            Console.WriteLine("Array in Ascending Order");
            foreach (Category cate in list)
            {
                Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString());
            }
                list.Sort(new CategoryComparer(SortDirection.Desc));
                Console.WriteLine("\n\rArray in Desending Order");
                foreach (Category cate in list)
                {
                    Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString());
                 }
                Console.ReadLine();
        }
    }
}