<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FDelegate%2FDelegate</id>
		<title>Visual C++ .NET/Delegate/Delegate - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FDelegate%2FDelegate"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Delegate/Delegate&amp;action=history"/>
		<updated>2026-04-30T09:16:36Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Delegate/Delegate&amp;diff=3914&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Delegate/Delegate&amp;diff=3914&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Delegate/Delegate&amp;diff=3915&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Delegate/Delegate&amp;diff=3915&amp;oldid=prev"/>
				<updated>2010-05-26T12:06:28Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Adding and removing Delegates==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
delegate void OutputMessage(String ^name);&lt;br /&gt;
void SayHello(String ^name){&lt;br /&gt;
    Console::Write(&amp;quot;Hello there &amp;quot;);&lt;br /&gt;
    Console::WriteLine(name);&lt;br /&gt;
}&lt;br /&gt;
ref class MyClass{&lt;br /&gt;
public:&lt;br /&gt;
    static void Print1(String ^name);&lt;br /&gt;
    void Print2(String ^name);&lt;br /&gt;
    void Print3(String ^name);&lt;br /&gt;
};&lt;br /&gt;
void MyClass::Print1(System::String ^name){&lt;br /&gt;
    Console::Write(&amp;quot;1 &amp;quot;);&lt;br /&gt;
    Console::WriteLine(name);&lt;br /&gt;
}&lt;br /&gt;
void MyClass::Print2(System::String ^name){&lt;br /&gt;
    Console::Write(&amp;quot;2 &amp;quot;);&lt;br /&gt;
    Console::Write(name);&lt;br /&gt;
}&lt;br /&gt;
void MyClass::Print3(System::String ^name){&lt;br /&gt;
    Console::Write(&amp;quot;3 &amp;quot;);&lt;br /&gt;
    Console::WriteLine(name);&lt;br /&gt;
}&lt;br /&gt;
void main(){&lt;br /&gt;
    OutputMessage^ say;&lt;br /&gt;
    say = gcnew OutputMessage(&amp;amp;SayHello);&lt;br /&gt;
    say += gcnew OutputMessage(&amp;amp;MyClass::Print1);&lt;br /&gt;
    MyClass ^computer = gcnew MyClass();&lt;br /&gt;
    say = say + gcnew OutputMessage(computer, &amp;amp;MyClass::Print2);&lt;br /&gt;
    say += gcnew OutputMessage(computer, &amp;amp;MyClass::Print3);&lt;br /&gt;
    say-&amp;gt;Invoke(&amp;quot;s1&amp;quot;);&lt;br /&gt;
    say = say - gcnew OutputMessage(&amp;amp;MyClass::Print1);&lt;br /&gt;
    say -= gcnew OutputMessage(computer, &amp;amp;MyClass::Print3);&lt;br /&gt;
    say(&amp;quot;s1&amp;quot;);&lt;br /&gt;
} &lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define delegate function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
using namespace System::Threading;&lt;br /&gt;
ref class MyClass{&lt;br /&gt;
public:&lt;br /&gt;
   property String^ Value;&lt;br /&gt;
   MyClass(String^ s) { Value = s; }&lt;br /&gt;
};&lt;br /&gt;
delegate void DoSearch(String^, MyClass^);&lt;br /&gt;
ref class Database{&lt;br /&gt;
   IAsyncResult^ result;&lt;br /&gt;
   MyClass^ m_r;&lt;br /&gt;
   public:&lt;br /&gt;
      Database(String^ s) { m_r = gcnew MyClass(s); }&lt;br /&gt;
   void Query(String^ queryString, MyClass^ r){&lt;br /&gt;
       r-&amp;gt;Value = &amp;quot;New Value&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   void InitiateQuery(String^ queryString){&lt;br /&gt;
      DoSearch^ qf = gcnew DoSearch(this, &amp;amp;Database::Query);&lt;br /&gt;
      Console::WriteLine(m_r-&amp;gt;Value);&lt;br /&gt;
      result = qf-&amp;gt;BeginInvoke(queryString, m_r,gcnew AsyncCallback(this, &amp;amp;Database::ProcessResult),qf);&lt;br /&gt;
   }&lt;br /&gt;
   bool IsQueryCompleted(){&lt;br /&gt;
      return result-&amp;gt;IsCompleted;&lt;br /&gt;
   }&lt;br /&gt;
   void ProcessResult(IAsyncResult^ result)&lt;br /&gt;
   {&lt;br /&gt;
      DoSearch^ caller = (DoSearch^) result-&amp;gt;AsyncState;&lt;br /&gt;
      caller-&amp;gt;EndInvoke(result);&lt;br /&gt;
      Console::WriteLine(m_r-&amp;gt;Value);&lt;br /&gt;
   }&lt;br /&gt;
};&lt;br /&gt;
int main(){&lt;br /&gt;
   Database doc(&amp;quot;Old Value&amp;quot;);&lt;br /&gt;
   doc.InitiateQuery(&amp;quot;SELECT * FROM Employee &amp;quot;);&lt;br /&gt;
   while (! doc.IsQueryCompleted() ){&lt;br /&gt;
       Thread::Sleep(100);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==delegate invocation list==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
delegate String^ MyDelegate();&lt;br /&gt;
ref class MyClass&lt;br /&gt;
{&lt;br /&gt;
   public:&lt;br /&gt;
   String^ f() { return &amp;quot;MyClass::f&amp;quot;; }&lt;br /&gt;
   String^ g() { return &amp;quot;MyClass::g&amp;quot;; }&lt;br /&gt;
   String^ h() { return &amp;quot;MyClass::h&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   MyDelegate^ d;&lt;br /&gt;
   MyClass^ r = gcnew MyClass();&lt;br /&gt;
   d =  gcnew MyDelegate(r, &amp;amp;MyClass::f);&lt;br /&gt;
   d = (MyDelegate^) d-&amp;gt;Combine(d, gcnew MyDelegate(r, &amp;amp;MyClass::g));&lt;br /&gt;
   d = (MyDelegate^) d-&amp;gt;Combine(d, gcnew MyDelegate(r, &amp;amp;MyClass::h));&lt;br /&gt;
   String^ s = d-&amp;gt;Invoke();&lt;br /&gt;
   Console::WriteLine(&amp;quot;Return value was {0}&amp;quot;, s);&lt;br /&gt;
   d = (MyDelegate^) d-&amp;gt;Remove(d, gcnew MyDelegate(r, &amp;amp;MyClass::g));&lt;br /&gt;
   s = d-&amp;gt;Invoke();&lt;br /&gt;
   Console::WriteLine(&amp;quot;Return value was {0}&amp;quot;, s);&lt;br /&gt;
   for each (MyDelegate^ del in d-&amp;gt;GetInvocationList())&lt;br /&gt;
   {&lt;br /&gt;
       s = del-&amp;gt;Invoke();&lt;br /&gt;
       Console::WriteLine(&amp;quot;Return value was {0}&amp;quot;, s);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==delegate operators==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
delegate void MyDelegate();&lt;br /&gt;
ref class MyClass{&lt;br /&gt;
   public:&lt;br /&gt;
   void f() { Console::WriteLine(&amp;quot;MyClass::f&amp;quot;); }&lt;br /&gt;
   void g() { Console::WriteLine(&amp;quot;MyClass::g&amp;quot;); }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   MyDelegate^ d;&lt;br /&gt;
   MyClass^ r = gcnew MyClass();&lt;br /&gt;
   d += gcnew MyDelegate(r, &amp;amp;MyClass::f);&lt;br /&gt;
   d += gcnew MyDelegate(r, &amp;amp;MyClass::g);&lt;br /&gt;
   d-&amp;gt;Invoke();&lt;br /&gt;
   d -= gcnew MyDelegate(r, &amp;amp;MyClass::g);&lt;br /&gt;
   d();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>