Properties: a.b.c = 3

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Jul 30 12:36:40 PDT 2009


Nick Sabalausky wrote:
> "Chad J" <chadjoan at __spam.is.bad__gmail.com> wrote in message 
> news:h4oku0$uel$1 at digitalmars.com...
>> Daniel Keep wrote:
>>> Maybe the compiler could rewrite the above as:
>>>
>>> auto t = a.b;
>>> t.c = 3;
>>> a.b = t;
>>>
>> I'd always suspected C# properties did something like this, though it's
>> been so long since I've used C# now that I'm wondering if it's bad memory.
>>
> 
> Same here, so I just did a little test in Visual C# 2008 Express. Turns out 
> that rewriting *is* exactly what C# does.
> 
> Code:
> --------------------------------------
> using System;
> 
> namespace ConsoleApplication1
> {
>     class Program
>     {
>         class Rect
>         {
>             public int width;
>             public int height;
> 
>             public Rect(int width, int height)
>             {
>                 this.width = width;
>                 this.height = height;
>             }
>         }
> 
>         class Widget
>         {
>             public Rect size { get; set; }
>             public Widget()
>             {
>                 size = new Rect(50,50);
>             }
>         }
> 
>         static void Main(string[] args)
>         {
>             Widget wid = new Widget();
> 
>             Console.Out.WriteLine("width:  "+wid.size.width);
>             Console.Out.WriteLine("height: "+wid.size.height);
> 
>             wid.size.width = 100;
> 
>             Console.Out.WriteLine("width:  "+wid.size.width);
>             Console.Out.WriteLine("height: "+wid.size.height);
> 
>             Console.ReadLine(); // So I can *read* the dang output
>         }
>     }
> }
> --------------------------------------
> 
> Compiles successfully.
> 
> Output:
> --------------------------------------
> width:  50
> height: 50
> width:  100
> height: 50
> --------------------------------------

As far as I understand, this example is not relevant because there are 
no structs involved.

Andrei



More information about the Digitalmars-d mailing list