Hello Denis,

On Sat, 27 Jun 2009 17:50:11 +0400, BCS <n...@anon.com> wrote:

Hello Nick,

Interesting idea, but IMO using NaN as a default initializer is just
a crutch for not having a real system of compile-time
detecting/preventing of uninitialized variables from being read
(C#'s system for this works very well in my experience).

I think you can prove that it is impossible to do this totally
correctly:

int i;

for(int j = foo(); j > 0; j--) i = bar(j);   // what if foo() returns
-5?

This code doesn't compile in C# and fails with the following error at
first attempt to use 'i':

error CS0165: Use of unassigned local variable 'i'


And if foo() is never <=0 then the error is valid, but incorrect. I like the int.nan idea better. Not one unassigned local variable error I have ever seen has pointed me at a bug.


Reply via email to