oLabel = CREATEOBJECT('Label') >oLabel1 = CREATEOBJECT('Label') >? oLabel = oLabel1 && .F. >? COMPOBJ(oLabel, oLabel1) && .T.The problem here is that with an assign method, there's always a chance, especially in this case, where the parameter passed isn't the result of a direct assignment statement between the exact same object. Therefore, the prudent programmer uses COMPOBJ() to properly evaluate two objects.
oForm = CREATEOBJECT('Form') >oForm1 = CREATEOBJECT('Form') >? COMPOBJ(oForm, oForm1) && .F. because they have different window handles.