generic comparable : IComparable « Class « Visual C++ .NET

Home
Visual C++ .NET
1.2D
2.Class
3.Collections
4.Data Type
5.Database ADO.net
6.Delegate
7.Development
8.File Directory
9.Function
10.Generics
11.GUI Form
12.Language Basics
13.Network
14.Reflection
15.Security
16.Statement
17.Structure
18.Thread
19.XML
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Visual C++ .NET » Class » IComparable 
generic comparable
 
#include "stdafx.h"

using namespace System;

enum class SortByEnum
{
   SortByDate,
   SortByFrom,
   SortBySubject
};

ref class MyEmail : IComparable<MyEmail^>
{
   public:

   static property SortByEnum SortCriterion;

   property DateTime DateReceived;
   property String^ From;
   property String^ Subject;
   property String^ Body;

   MyEmail(DateTime dt, String^ from, String^ subject, String^ body)
   {
      DateReceived = dt;
      From = from;
      Subject = subject;
      Body = body;
   }

   virtual int CompareTo(MyEmail^ msg)
   {

       switch SortCriterion )
       {
           case SortByEnum::SortByDate:
              return this->DateReceived.CompareTo(msg->DateReceived);
           case SortByEnum::SortByFrom:
              return this->From->CompareTo(msg->From);
           case SortByEnum::SortBySubject:
              return this->Subject->CompareTo(msg->Subject);
           default:
              throw gcnew InvalidOperationException();
       }

   }
};

void PrintHeaders(array<MyEmail^>^ messages, SortByEnum sortOrder){
   MyEmail::SortCriterion = sortOrder;
   Array::Sort(messages);

   for (int i = 0; i < messages->Length; i++)
   {
       Console::WriteLine("Received: {0} From: <{1}> Subject: {2}",messages[i]->DateReceived, messages[i]->From,messages[i]->Subject );
   }
}

int main(){
   array<MyEmail^>^ message_array ={
      gcnew MyEmailDateTime(2006112)"N""D"""),
      gcnew MyEmailDateTime(2006115)"G""B"""),
      gcnew MyEmailDateTime(200612)"G""B"""),
      gcnew MyEmailDateTime(20051231)"J","W""")
   };

   PrintHeaders(message_array, SortByEnum::SortByDate);
   PrintHeaders(message_array, SortByEnum::SortByFrom);
   PrintHeaders(message_array, SortByEnum::SortBySubject);

}

   
  
Related examples in the same category
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.