Besides what gile has said...
Call to Form.Close() has different result to the form itself depending on how the form is shown:
When the form is shown as modeless, i.e. Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog()/Forms.Show(), the Close() method not only close the form visibly, but also dispose the form.
When the form is show as Dialogbox/Modal, i.e. Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog()/Form.ShowDialog(), the Close() method only close the form visibly, but not dispose the form. That is, the Close() call to a Modal form is equivalent to Form.Hide()/Form.Visible=False. It is the Form's calling code's responsibility to dispose a form that is shown as Dialog box, if necessary. That is why it is common practice to wrap up a dialog form in a "using...." block, but not modeless form.
BTW, in AutoCAD if modeless Form is used, in most cases. if not all, the form would be created as singleton object (i.e. static instance), and its FormClosing even is handled so that the form closing is cancelled; instead we set its Visible to False in the event handler. So that to the users, the form is closed. But the form instance still exists in memory and can be set to visible when needed. The typical example is PaletteSet.