What is the default boolean value in C#?

前端 未结 6 927
心在旅途
心在旅途 2020-12-05 09:17

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

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

Why the default value is

6条回答
  •  执笔经年
    2020-12-05 09:37

    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.

提交回复
热议问题