NETJVM 

ATTACH 文

デリゲート、メソッド グループ、または匿名メソッドをイベントにアタッチする。

一般形式

ATTACH 文の構文

構文規則

  1. event-expression は EVENT に評価されなければならない。
  2. delegate-instance (デリゲート インスタンス) は、event-expression と同じ型のデリゲート型に評価される式でなければならない。
  3. method-group には、event-expression のデリゲート型と互換性のあるメソッドを指定しなければならない。

一般規則

  1. デリゲート インスタンスまたはメソッドは、指定されたイベントにアタッチされ、イベントが実行されるたびに実行される。

class-id. AttachExample. 01 changeCount1 binary-long static. 01 changeCount2 binary-long static. method-id. main static. 01 names type myList. 01 del type ChangeDelegate. procedure division. set names to new myList attach method self::ListChanged1 to names::ChangeEvent set del to method self::ListChanged2 attach del to names::ChangeEvent move 0 to changeCount1 move 0 to changeCount2 invoke names::"Add"("Max") invoke names::"Add"("Hector") invoke names::"Add"("Rover") invoke names::"Add"("Spot") if changeCount1 = 4 and changeCount2 = 4 display "Pass" else display "Fail" end-if detach del from names::ChangeEvent move 0 to changeCount1 move 0 to changeCount2 invoke names::"Add"("A") invoke names::"Add"("B") invoke names::"Add"("C") invoke names::"Add"("D") if changeCount1 = 4 and changeCount2 = 0 display "Pass" else display "Fail" end-if detach method self::ListChanged1 from names::ChangeEvent move 0 to changeCount1 move 0 to changeCount2 invoke names::"Add"("A") invoke names::"Add"("B") invoke names::"Add"("C") invoke names::"Add"("D") if changeCount1 = 0 and changeCount2 = 0 display "Pass" else display "Fail" end-if end method main. method-id ListChanged1 static(i1 as binary-long) static. add i1 to changeCount1 end method. method-id. ListChanged2 (i1 as binary-long) static. add i1 to changeCount2 end method. end class. class-id myList. 01 my-list List[string]. 01 ChangeEvent type ChangeDelegate event public. method-id. new. create my-list end method new. method-id Add (s as string). write my-list from s if ChangeEvent not = null invoke ChangeEvent(1) end-if end method. end class. delegate-id. ChangeDelegate (x1 as binary-long). end delegate ChangeDelegate.