Properties: a.b.c = 3

Ary Borenszweig ary at esperanto.org.ar
Wed Jul 29 07:44:47 PDT 2009


Andrei Alexandrescu wrote:
> Kagamin wrote:
>> Andrei Alexandrescu Wrote:
>>
>>> Kagamin wrote:
>>>> Andrei Alexandrescu Wrote:
>>>>> The question is very simple: given that we're used with a
>>>>> specific semantics for a.b.c = 3, how can we address the fact
>>>>> that the semantics of this familiar operation is so different
>>>>> (and likely so useless) when properties replace fields?
>>>> You're solving problems that never came to life. Well... only as
>>>> syntetic examples.
>>> IMHO it's quite the contrary, a.b.c = 3 is a very simple and
>>> concrete problem that emphatically shows we haven't gotten
>>> properties up to snuff.
>>
>> Never saw this problem in C#.
> 
> Of course you didn't. This is because C# doesn't have it - their structs 
> can't define properties.
> 
> Andrei

Yes they can. And also C# shows us the solution to the problem (similar 
to what Walter proposed).

---
public class Bar
{
     public Foo Foo { get; set; }
}

public struct Foo
{
     public int Property { get; set; }
}

Bar bar = new Bar();
Foo foo = new Foo();
foo.Property = 10;
bar.Foo = foo;

bar.Foo.Property = 20; // line 16
---

Error on line 16: Cannot modify the return value of 'Bar.Foo' because it 
is not a variable



More information about the Digitalmars-d mailing list