📄 delegatesexample.cpp
字号:
#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
using namespace System;
using namespace System::Collections;
__gc class Book
{
public:
Book(String* title, String* author)
{
this->title = title;
this->author = author;
}
protected:
String* title;
String* author;
public:
__property String* get_Title()
{
return this->title;
}
__property void set_Title(String* title)
{
this->title = title;
}
public:
__property String* get_Author()
{
return this->author;
}
__property void set_Author(String* author)
{
this->author = author;
}
};
__gc class Library
{
public:
Library()
{
books = new ArrayList();
Book* b1 = new Book("Visual C++.NET Bible", "Tom Archer & Andrew Whitechapel");
books->Add(b1);
Book* b2 = new Book("Inside C#", "Tom Archer & Andrew Whitechapel");
books->Add(b2);
Book* b3 = new Book("The Career Programmer", "Christopher Duncan");
books->Add(b3);
}
protected:
ArrayList* books;
public:
__delegate void SendAllBooksCallback(Book* book);
void SendAllBooks(SendAllBooksCallback* callback)
{
Console::WriteLine(S"[Library::SendAllBooks] Using delegate object to send data to client");
for (int i = 0; i < books->Count; i++)
{
callback(static_cast<Book*>(books->Item[i]));
}
}
};
__gc class BookReader
{
public:
void ReadAllBooks()
{
Console::WriteLine(S"[BookReader::ReadAllBooks] Instantiating a Library object");
Library* library = new Library();
Console::WriteLine(S"[BookReader::ReadAllBooks] Creating a delegate object");
Library::SendAllBooksCallback* myCallback =
new Library::SendAllBooksCallback(this, &BookReader::ReadBook);
Console::WriteLine(S"[BookReader::ReadAllBooks] Calling Library::SendAllBooks (passing delegate)");
library->SendAllBooks(myCallback);
}
void ReadBook(Book* book)
{
Console::WriteLine("Reading book {0} by {1}", book->Title, book->Author);
}
};
int _tmain(void)
{
Console::WriteLine(S"[_tmain] Instantiating a BookReader object");
BookReader* pReader = new BookReader();
Console::WriteLine(S"[_tmain] Calling BookReader::ReadAllBooks");
pReader->ReadAllBooks();
Console::ReadLine();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -