[Mono-dev] CS0019 for value type != null

Casey Marshall cmarshall at pacificbiosciences.com
Tue Apr 8 14:17:59 EDT 2008


On Tue, 2008-04-08 at 10:14 +0100, Marek Safar wrote:
> Hello Casey,
> >
> > I've noticed that on a recent SVN build of mono, I get a CS0019 error if
> > I try to compare a value type against null. E.g.:
> >
> >   DateTime dt;
> >   if (dt != null)
> >     Console.WriteLine(dt);
> >
> > As far as I can tell, this is the correct behavior, since a value type
> > can't be null. I'm concerned, though, because this behavior seems to
> > have been introduced recently in SVN, AND it looks like MS's compiler
> > doesn't reject this statement (well, I haven't seen it accept it, but
> > this is existing code which apparently compiles fine under Visual
> > Studio).
> >
> This code compiles correctly with the SVN HEAD version.
> 

If I'm understanding correctly, then the SVN snapshot I have (a month
old or so) is incorrect?

I'll just update if that's the case.

> >
> > So, my question is, what's going on here? Does anyone know what the
> > semantics are if the compiler generates a conditional based on a
> > `valuetype CMP null' test?
> >
> This particular comparison is in-lined to false constant.
> 

Huh. Seems like an awfully bad way to handle that: if you aren't paying
attention, some subtle bugs would creep in to code assuming that '==
null' means something is uninitialized.


More information about the Mono-devel-list mailing list