Properties: a.b.c = 3
Nick Sabalausky
a at a.a
Thu Jul 30 11:40:21 PDT 2009
"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
--------------------------------------
More information about the Digitalmars-d
mailing list