On Thursday, 30 August 2012 at 08:57:24 UTC, Tommi wrote:
On Thursday, 30 August 2012 at 07:35:34 UTC, Namespace wrote:

struct MyStruct
{
  // ref int defaultInitRef; // Illegal: reference variables
                             // can't be default initialized

But you can handle it like const members: you have to initialize these members in the ctor.

Yeah, maybe. I'm starting to think we should really know the implementation details of the language in order to even speculate about how ref might be implemented.
I agree.

On Thursday, 30 August 2012 at 07:35:34 UTC, Namespace wrote:
So ref Foo fr = null; is equally forbidden as
[code]
Foo f; // same as Foo f = null;
ref Foo fr = f;

But you can always say:

Foo f = new Foo();
ref Foo fr = f;
f = null;

...after which fr references f, which references null, so effectively fr references null. I don't think this could be prevented from happening.

That's true... Maybe in "ref Foo fr = f;" fr shouln't be a real pointer to f and instead an object which refer to the concrete object of f. Then it would be indifferent if you write f = null; because "fr" refers still to a valid object.

Reply via email to