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

Reply via email to