[Solved] What is the default boolean value in C#?

A boolean (bool) can’t be null. And:

bool foo; if(foo){} // Use of unassigned local variable 'foo'

Why the default value is not false? So what is the value if it is not null?
What is the reason?

Edit 1 – The default value is indeed false – but all variable should be initialized, why? this is for another question 😉

Edit 2 – with Resharper : private bool foo = false; // Initializing field by default value is redundant ???

Solution #1:

http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx

Remember that using uninitialized variables in C# is not allowed.

With

bool foo = new bool();

foo will have the default value.

Boolean default is false

Respondent: Destructor

Solution #2:

Basically local variables aren’t automatically initialized. Hence using them without initializing would result in an exception.

Only the following variables are automatically initialized to their default values:

  • Static variables
  • Instance variables of class and struct instances
  • Array elements

The default values are as follows (assigned in default constructor of a class):

  • The default value of a variable of reference type is null.
  • For integer types, the default value is 0
  • For char, the default value is `u0000′
  • For float, the default value is 0.0f
  • For double, the default value is 0.0d
  • For decimal, the default value is 0.0m
  • For bool, the default value is false
  • For an enum type, the default value is 0
  • For a struct type, the default value is obtained by setting all value type fields to their default values

As far as later parts of your question are conerned:

  • The reason why all variables which are not automatically initialized to default values should be initialized is a restriction imposed by compiler.
  • private bool foo = false; This is indeed redundant since this is an instance variable of a class. Hence this would be initialized to false in the default constructor. Hence no need to set this to false yourself.
Respondent: Hasan Fahim

Solution #3:

The default value is indeed false.

However you can’t use a local variable is it’s not been assigned first.

You can use the default keyword to verify:

bool foo = default(bool);
if (!foo) { Console.WriteLine("Default is false"); }
Respondent: Petar Ivanov

Solution #4:

The default value for bool is false. See this table for a great reference on default values. The only reason it would not be false when you check it is if you initialize/set it to true.

Respondent: Corey Larson

Solution #5:

Try this (using default keyword)

 bool foo = default(bool); if (foo) { } 
Respondent: TalentTuner

Solution #6:

It can be treated as defensive programming approach from the compiler – the variables must be assigned before it can be used.

Respondent: Ajay

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.