var strlist : TStringlist;
strlist := Tstringlist.create;

I know strlist is a Tstringlist, the compiler knows it too as I have declared it so why do I have to spell it out in the creation process?

For 2 reasons:

First, with

 strlist.create;

It is not clear whether strlist is already initialized or not;
there is no way it can now this.

 strlist := Tstringlist.create;

makes this explicitly clear.

Second, with

 strlist.create;

It is not clear from reading whether create is a constructor or not.
Create() is just a convention, which you can decide to ignore.
Here again, with

 strlist := TStringlist.create;

Create MUST be a constructor, since you are initializing the variable.

Look at other languages: VB, PHP, Perl, Python.
They all require the use of the 'new' (or a variant thereof)  keyword
when the constructor must be called:

  strlist = new tstringlist;

Michael.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to