Properties in C# and prop_Foo

Bill Baxter wbaxter at gmail.com
Sun Aug 9 12:53:23 PDT 2009


On Sun, Aug 9, 2009 at 11:25 AM, grauzone<none at example.net> wrote:
> Bill Baxter wrote:
>>
>> Interesting thing I found out about C# properties.
>> The syntax
>>
>> int Thing {
>>   get { return _thing; }
>>   set { _thing = value; }
>> }
>>
>> is rewritten by the C# compiler into
>>
>> int prop_Thing() { return _thing; }
>> void prop_Thing(int value) { _thing = value; }
>>
>> Just thought it was interesting given all our discussions,
>> particularly that the syntax C# translates into is exactly what Andrei
>> was proposing we use for D's syntax.  And I think I even said that was
>> fine, but let's have a different syntax for declaring that the D
>> compiler translates into those prop_Thing methods.  Well, it turns out
>> that's exactly what C# does.
>
> C# doesn't allow you to directly call the accessors (which are named
> set_Thing and get_Thing, btw.). It also creates and associates metadata with
> the property (so that you know that "Thing" is supposed to be a property
> with these setters and getters).
>
> In C# (as in the language) properties still work as cast into concrete; it's
> just that on the lowest level, it is mapped to normal methods + extra
> metadata.

I see.  I thought you could call get_Thing, set_Thing directly.

--bb



More information about the Digitalmars-d mailing list