2011-02-23 5 views

답변

2

아이디어는 그 세 개의 서로 다른 보유 할 수있는 다른 클래스 벌브는 빛이 켜져 있고 빛나는 이벤트 (핸들러를 구현하는 경우)에 의해 통지를받을 수 있습니다.

그래서 단순한 클래스에있는 이점이 아니라 클래스/개체가 Bulb 클래스의 인스턴스를 보유/사용하고있는 것에 있습니다. 어떤 의미 :

4

단순히 이벤트가 이벤트가 발생했을 때 (전구가 빛나는 경우) 코드를 사용하여 다른 사람들이 그들이 원하는 일부 사용자 지정 구현을 수행 할 수 있도록했다

희망.

단순히 메서드를 호출해도 아무 것도 발생하지 않았 음을 알리는 사람이 없습니다. 당신의 프로그램을 사용하면 다음과 같은 기능을 구현하지 않아도 이벤트에 대해 말할 필요가없는 경우

이벤트 요소 어떤 이벤트 기반 프로그래밍

의 아주 기본입니다. 그러나 이러한 기능을 갖는 데는 이점이 있습니다. 예를 들어


당신이 항목을 당신이 얻을 그것은 (어떤 점에서 다른 코드 않는 경우 해당)에 있지만 ObservableCollection에 추가 왔을 때 잘 모릅니다 List 클래스를 사용하는 항목이 추가 또는 삭제 통지 .


이벤트는 동작의 발생을 알리기 위해 개체에 의해 전송 된 메시지이다. 이 동작은 마우스 클릭과 같은 사용자 상호 작용으로 인해 발생하거나 다른 프로그램 논리에 의해 트리거 될 수 있습니다. 이 램프 클래스는 뭔가를 인식 할 수

public class Lamp 
{ 
    Bulb inThelamp = new Bulb(); 
    inTheLamp.Glowing += myLampMethod; 

    // If these arguments have been defined for this event that is 
    public void myLampMethod(object sender, EventArgs e) 
    { 
     // Code to react to the light suddenly being on 
    } 
} 

에 전구를 돌았 다 : 당신이 알 나 상태 변화를 통지 할 필요가있는 클래스 종속성이 때 방법에 비해

2

이벤트 편리하게 . 많은 경우 램프 (클릭, 푸시 노브 등)의 일부 동작을 수행합니다. 그러나 경우에 따라 램프 자체 (예 : if(PowerCompany.BillsPaid) Lamp.BulbInTheLamp.TurnedOn();)를 사용하지 않고 공용 Bulb 속성을 직접 호출하는 외부 클래스가 될 수 있습니다. 이 모든 것은 수정자가이 종류의 액세스를 허용하도록 설정되었다고 가정합니다.

요점은 동작을 발생시킬 때마다 수동으로 특정 메서드를 호출하도록 요구하기보다는 어커런스를 통지 할 수 있다는 것입니다.

관련 문제