True Properties Poll

"Jérôme M. Berger" jeberger at free.fr
Fri Jul 31 14:23:07 PDT 2009


Jesse Phillips wrote:
> Nick Sabalausky Wrote:
> 
>> "Jesse Phillips" <jessekphillips+d at gmail.com> wrote in message 
>> news:h4vg5q$13mn$1 at digitalmars.com...
>>> I find writing
>>>
>>> property int foo { get; set;}
>>>
>>> More work than
>>>
>>> public int foo;
>> That's an unfair apples-to-oranges comparison.
>>
>> This:
>>
>> property int foo { get; set;}
>>
>> Is comparable to this current code:
>>
>> private int _foo;
>> int foo()
>> {
>>     return _foo;
>> }
>> int foo(int value)
>> {
>>     _foo = value;
>>     return value;
>> }
>>
>> It is *not* comparable to:
>>
>> public int foo;
> 
> I thought this might come up, but what do you gain from all that extra code? I heard mention of not being able to get the address of the field... but that is a very deliberate thing to do and should not be the purpose of getters/setters.

	Nothing. If you're property is destined to be read from and written 
to and all it does is access the underlying field, then you might as 
well use a public field anyway. A "special" property syntax becomes 
necessary when you want to do one of the following:

  - Read only access (note that this can't be done with "const" if 
you want the object to be able to modify its own properties but want 
to prevent outside code from doing it);

  - Write only access;

  - Take extra action on access (i.e mark object "dirty" or notify 
registered listeners when a property is changed);

  - "Virtual" properties, i.e properties that don't correspond to 
any memory storage (or where the storage is merely a cache for a 
value that's expensive to compute).

		Jerome
-- 
mailto:jeberger at free.fr
http://jeberger.free.fr
Jabber: jeberger at jabber.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP digital signature
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20090731/a14a5371/attachment.pgp>


More information about the Digitalmars-d mailing list