Adding and removing Delegates : Delegate « Delegate « Visual C++ .NET






Adding and removing Delegates

  

#include "stdafx.h"
using namespace System;

delegate void OutputMessage(String ^name);

void SayHello(String ^name){
    Console::Write("Hello there ");
    Console::WriteLine(name);
}

ref class MyClass{
public:
    static void Print1(String ^name);
    void Print2(String ^name);
    void Print3(String ^name);
};

void MyClass::Print1(System::String ^name){
    Console::Write("1 ");
    Console::WriteLine(name);
}

void MyClass::Print2(System::String ^name){
    Console::Write("2 ");
    Console::Write(name);
}

void MyClass::Print3(System::String ^name){
    Console::Write("3 ");
    Console::WriteLine(name);
}

void main(){
    OutputMessage^ say;
    say = gcnew OutputMessage(&SayHello);
    say += gcnew OutputMessage(&MyClass::Print1);
    MyClass ^computer = gcnew MyClass();

    say = say + gcnew OutputMessage(computer, &MyClass::Print2);
    say += gcnew OutputMessage(computer, &MyClass::Print3);

    say->Invoke("s1");

    say = say - gcnew OutputMessage(&MyClass::Print1);
    say -= gcnew OutputMessage(computer, &MyClass::Print3);

    say("s1");
} 

   
    
  








Related examples in the same category

1.delegate invocation list
2.delegate operators
3.Define delegate function