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