[c#] C #의 기본 부울 값은 무엇입니까?

부울 ( bool)은 null 일 수 없습니다. 과:

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

기본값이 거짓이 아닌 이유는 무엇입니까? 그렇다면 null이 아닌 경우 값은 무엇입니까? 그 이유는 무엇입니까?

편집 1-기본값은 실제로 거짓이지만 모든 변수를 초기화해야합니다. 이유는 무엇입니까? 이것은 다른 질문입니다;)

편집 2-Resharper 사용 : private bool foo = false; // Initializing field by default value is redundant???



답변

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

C #에서 초기화되지 않은 변수를 사용하는 것은 허용되지 않습니다.

bool foo = new bool();

foo는 기본값을 갖습니다.

부울 기본값은 false입니다.


답변

기본적으로 지역 변수는 자동으로 초기화되지 않습니다. 따라서 초기화하지 않고 사용하면 예외가 발생합니다.

다음 변수 만 기본값으로 자동 초기화됩니다.

  • 정적 변수
  • 클래스 및 구조체 인스턴스의 인스턴스 변수
  • 배열 요소

기본값은 다음과 같습니다 (클래스의 기본 생성자에 지정됨).

  • 참조 유형 변수의 기본값은 널입니다.
  • 정수 유형의 경우 기본값은 0입니다.
  • char의 경우 기본값은`\ u0000 ‘입니다.
  • float의 경우 기본값은 0.0f입니다.
  • double의 경우 기본값은 0.0d입니다.
  • 10 진수의 경우 기본값은 0.0m입니다.
  • bool의 경우 기본값은 false입니다.
  • 열거 형 유형의 경우 기본값은 0입니다.
  • 구조체 유형의 경우 모든 값 유형 필드를 기본값으로 설정하여 기본값을 얻습니다.

귀하의 질문의 후반부에 관한 한 :

  • 기본값으로 자동 초기화되지 않는 모든 변수를 초기화해야하는 이유는 컴파일러가 부과 한 제한 때문입니다.
  • private bool foo = false; 이것은 클래스의 인스턴스 변수이기 때문에 실제로 중복됩니다. 따라서 이것은 기본 생성자에서 false로 초기화됩니다. 따라서 이것을 거짓으로 설정할 필요가 없습니다.


답변

기본값은 실제로 거짓입니다.

그러나 먼저 할당되지 않았기 때문에 지역 변수를 사용할 수 없습니다.

기본 키워드를 사용하여 다음을 확인할 수 있습니다.

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


답변

bool의 기본값은 false입니다. 기본값에 대한 훌륭한 참조는 이 표 를 참조하십시오 . 확인할 때 거짓이 아닌 유일한 이유는 초기화 / 참으로 설정 한 경우입니다.


답변

이것을 시도하십시오 (기본 키워드 사용)

 bool foo = default(bool); if (foo) { }


답변

컴파일러에서 방어 프로그래밍 방식으로 처리 할 수 ​​있습니다. 변수를 사용하려면 먼저 할당해야합니다.


답변