문제

이것은 예를 동반 agsXMPP.Net 어셈블리입니다.I've read up 에서 대리인,하지만 확실하지 않는 방법에 맞는 이 라인의 코드(을 기다리는 로그온하여 발생한 다음 메시지를 보냅니다.나는 내가 무엇을 찾고 있는지에 대한 이해 delegate(0) 이 기능을 수행,종류에의 간단한 조건을 이해할 수 있습니다.

xmpp.OnLogin += delegate(object o) { 
    xmpp.Send(new Message(new Jid(JID_RECEIVER), 
    MessageType.chat, 
    "Hello, how are you?")); 
};
도움이 되었습니까?

해결책

delegate(object o){..} 컴파일러를 패키지로 무엇이 대괄호 안에 있는 객체로 실행되는 이상,이러한 경우 OnLogin 가 발생합니다.이 없 delegate() 문 컴파일러는 생각할 것이 있다 묶는 작업을 실행하의 중간에 assignemnt 문 및 오류가 있습니다.

다른 팁

그것은 정확히 동일

xmpp.OnLogin += EventHandler(MyMethod);

는 MyMethod 가

public void MyMethod(object o) 
{ 
    xmpp.Send(new Message(new Jid(JID_RECEIVER), MessageType.chat, "Hello, how are you?")); 
}

으로 아베 총리는 지적,이 코드를 만드는 익명의 기능입니다.이:


xmpp.OnLogin += delegate(object o) 
   { 
      xmpp.Send(
         new Message(new Jid(JID_RECEIVER), MessageType.chat, "Hello, how are you?")); 
   };

되었을 것 수행에서 다음과 같이 이전 버전의.Net(I 을 제외한 클래스를 선언한,그리고 그 필수적인 요소)사용:


delegate void OnLoginEventHandler(object o);

public void MyLoginEventHandler(object o)
{
      xmpp.Send(
         new Message(new Jid(JID_RECEIVER), MessageType.chat, "Hello, how are you?")); 
}

[...]

xmpp.OnLogin += new OnLoginEventHandler(MyLoginEventHandler);

무슨 일을 하는 어느 경우에는 연결하는 방법을 실행할 때 xmpp 와 호환 이벤트가 발생합니다.

OnLogin on xmpp 은 아마 이벤트를 선언한 이

public event LoginEventHandler OnLogin;

LoginEventHandler 은 대형마로 선언:

public delegate void LoginEventHandler(Object o);

는 것을 의미를 구독하기 위해 이벤트를 제공해야 합법(나 방법 익명 / lambda expression 는)경기 LoginEventHandler 임자 서명이 있습니다.

예에서,당신이 통과하는 익명 사용하는 방법 delegate 키워드:

xmpp.OnLogin += delegate(object o)
                { 
                    xmpp.Send(new Message(new Jid(JID_RECEIVER), 
                              MessageType.chat,
                              "Hello, how are you?")); 
                };

의 방법 익명과 일치하는 대리인의 서명에 의해 예상된 OnLogin 이벤트(void 반환을 입력 중 하나 개체수).수도 제거 object o 매개 변수에 활용 반공, 이후,그것은 내에서 사용하는 방법 익명체.

xmpp.OnLogin += delegate
                { 
                    xmpp.Send(new Message(new Jid(JID_RECEIVER), 
                              MessageType.chat,
                              "Hello, how are you?")); 
                };

을 만드는 익명의 기능입니다.이 기능을 도입되었 C#2.0

그것이 제공하는 익명의 방법,그래서 당신은 당신이 필요하지 않을 선언하는 다른 곳이다.그것은 매우 유용합니다.

그것이 무엇을 경우에는 첨부하는 방법 목록에는 작업이 트리거되기 때문에 onLogin 이벤트입니다.

에 동의 아베 총리,이 익명의 방법입니다.익명의 방식이란 것은 없다고 말씀하시지만 메서드 이름이 없는 제공할 수 있습으로 매개 변수는 인자이다.

분명히 와 호환 개체입니다 이벤트를 사용하여 연산자를 보장하는 방법으로 지정된 익명의 대리자를 위 실행할 때마다 와 호환 이벤트가 발생합니다.

기본적으로,코드 내부{}실행 할 때"와 호환"이벤트의 xmpp 이벤트가 발생합니다.이름을 기반으로,나는 추측하는 이벤트가 발생 동안 어떤 시점에서 로그인 과정입니다.

The syntax:

delegate(object o) { statements; }

이라는 익명의 방법입니다.코드에 당신의 질문을 것 equivilent 다.

public class MyClass
{
  private XMPPObjectType xmpp;
  public void Main()
  {
    xmpp.OnLogin += MyMethod;
  }
  private void MyMethod(object o)
  {
    xmpp.Send(new Message(new Jid(JID_RECEIVER), MessageType.chat, "Hello, how are you?"));
  }
}

당신은 가입하는 와 호환 이벤트에 xmpp.

즉 xmpp 화재 이벤트 코드가 내부에 익명의 대리자가 발생합니다.그 우아한 방법을 콜백이 있습니다.

에 Xmpp,같은 것입니다:

   // Check to see if we should fire the login event
   // ALso check to see if anything is subscribed to OnLogin 
   // (It will be null otherwise)
   if (loggedIn && OnLogin != null)
   {
       // Anyone subscribed will now receive the event.
       OnLogin(this);
   }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top