A reference that cannot be null

2010-03-10

In most (all?) object oriented programming languages it is possible to have a reference to an object and have this reference be null/nothing/nil.  There are many cases this isn’t a good idea; like for instance method signatures.

AddCustomer( Customer customer )

and customer is null.  Not very common…

It would be nice to have a reference type that cannot be null.  Ever.  The compiler should also know about this and break if the code flow allows the reference being null.

Advertisements

3 Responses to “A reference that cannot be null”

  1. Johan Says:

    Du kan Väll alltid skriva något i stil med AddCustomer(Customer customer=new Customer()) ?

  2. selfelected Says:

    Det är ett fall du beskriver. Det finns miljarder fall till där det inte går att göra så.

    T.ex. för metoder.
    void Foo( Customer customer ){
    customer.Name = "Bar";
    }

    Här litar metoden på att den får något in. Får den inget kastas en exception. Hade det inte varit bättre om vi visste att där kom in något.

    —-

    Ditt exempel ovan har ett annat problem. Man har nu lagt till en Customer som inte är en Customer. Något vi inte heller önskar. Se http://selfelected.blogspot.com/2008/06/make-sure-your-objects-are-fully.html

  3. Jörgen B Says:

    Kika på code contracts i .net 4.
    Där sätter du upp regler/kontrakt som checkas i compile och eller runtime

    tex

    public int Percentage
    {
    get …
    set
    {
    Contract.Requires((value >= 0) && (value <= 100));
    percentage = value;
    }
    }


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: