Assigned überprüft nicht, ob irgendwelcher Müll in dem Methodenzeiger steht, sondern nur ob er ungleich nil ist.
Hab ich was Anderes behauptet?
Delphi-Quellcode:
var
X: TNotifyEvent;
if Assigned(X) then
Beep;
if (TMethod(X).Code <> nil) or (TMethod(X).Data <> nil) then
Beep;