C #에서 부울 유형과 부울 유형의 차이점은 무엇입니까?


답변:


382

bool에 대한 별칭 System.Boolean과 마찬가지로 int에 대한 별칭입니다 System.Int32. 기본 제공 유형 테이블 (C # 참조) 에서 전체 별명 목록을 참조하십시오 .


5
위의 링크에서 Microsoft는 C # 유형 키워드와 별칭이 상호 교환 가능하다고 말합니다.하지만 별칭이 필요한 이유 내 관점에서 부울이 더 의미가 있고 bool이고 Int32가 더 의미가 있고 int가 왜 별칭입니까?
Asim Sajjad

6
@asim : 게으름? 타이핑이 적고 시스템을 가져올 필요가 없습니다. 개인적으로 나는 별칭을 선호합니다. "int"를 입력하는 것이 "Int32"를 입력하는 것보다 훨씬 빠릅니다.
Kent Boogaart

8
@ asmin : 그것은 C 일입니다. int, float 등은 C 및 C ++ 프로그래머에게 친숙한 키워드이므로 일관성을 위해 이러한 별칭을 사용하기로 결정했습니다.
Mike Chamberlain

42
@Mikey Java가 일관성을 위해 이러한 별칭을 사용하기로 결정했으며 Microsoft는 일관성을 위해 Java를 사용하기로 결정했습니다 ... :-)
max

19
@MaxWell에서 자바 booleanBoolean같은 일이 아닙니다. 하나는 기본 데이터 형식이고 다른 하나는 개체입니다.
Rosdi Kasim

48

나는 하나가 있다고 믿지 않습니다.

bool 에 대한 별칭입니다 System.Boolean


22

그들은 같은 것 중 하나입니다. bool은 부울의 별칭입니다.



15

나는 이것이 몇 년 후인 것을 알고 있지만 같은 질문으로 Google 에서이 페이지를 우연히 발견했습니다.

현재 MSDN 페이지에는 약간의 차이가 있습니다.

VS2005

노트 :

값이 null 인 부울 변수가 필요한 경우 bool을 사용하십시오. 자세한 내용은 Nullable Types (C # 프로그래밍 가이드)를 참조하십시오.

VS2010

노트 :

값이 null 인 부울 변수가 필요한 경우 bool?을 사용하십시오. 자세한 내용은 Nullable Types (C # 프로그래밍 가이드)를 참조하십시오.


2
나는 이것으로 넘어졌다. 문서의 버그 인 것 같다. VS2005 페이지를 먼저 보았고 (Google 순위에서 더 높게 나타납니다!) boolnull을 포함 할 수는 있지만 내포 할 수 없다는 것을 암시했습니다 Boolean. 이전 문서에서 최신 문서로의 링크가 있지만 단일 ?차이점 을 알 수있을만큼 최신 문서를 완전히 읽지는 못했습니다 .
Logan Pickup

1
죄송하지만 그게 잘못입니다. bool 또는 Bolean은 nullable 형식이므로 null로 변환 할 수 없습니다.
Timothy Macharia

13

그들은 동일합니다. 부울은 C #과 VB.Net 간의 변환을 단순화하는 데 도움이됩니다. 대부분의 C # 프로그래머는 'bool'을 선호하지만 VB.Net과 C #이 많은 상점에 있으면 부울을 선호 할 수 있습니다. 두 위치 모두에서 작동하기 때문입니다.


10

말했듯이, 그들은 동일합니다. bool은 C # 키워드이고 Boolean은 .Net 클래스이므로 두 가지가 있습니다.


그렇다면 크로스 플랫폼 호환성에 더 좋지 않을까요?
Beep beep


5

bool은 부울 클래스의 별명입니다. 클래스에서 메소드를 호출 할 때 변수를 선언 할 때 별칭과 클래스 이름을 사용합니다.


8
관심 없음-왜 두 가지를 모두 사용 하시겠습니까? 나는 하나 또는 다른 것을 사용하는 것을 옹호합니다. 별칭을 사용하거나 사용하지 않으면 코드가 지저분하고 일관성이 없어 보입니다.
Kent Boogaart

2
둘 다 사용하지 않으면 지저분 해 보입니다. 데이터 유형을 선언하기 위해 별명을 사용하고 정적 메소드에 액세스 할 때 실제 클래스 이름을 사용하십시오. string x = String.Format ( "Today is : {0}", DateTime.Now);
Scott Dorman

1
그래서 당신은 할 것입니다 : int i = Int32.Parse (...); ? 나는 그것에 몇 가지 문제가 있습니다. 먼저 VS는 기본적으로 다르게 강조 표시됩니다 (이를 변경할 수는 있지만 대부분의 개발자는 기본 구문 강조 표시 만 사용합니다). 둘째, 특히 long (long / Int64)에서는 검색이 더 어렵습니다.
Kent Boogaart

4
그렇습니다, 그것이 정확히 이루어져야합니다. int는 클래스 이름이 아니며 메소드를 호출해서는 안됩니다. 한편, 내장형이며 Int32 i를 정의합니다. 너무 장황하고 자연스럽지 않습니다.
AviD

5
별칭과 클래스 이름을 혼합하면 코드 선명도에 아무것도 추가되지 않습니다. 하나를 선택하고 그것으로 붙어, imho
Arne Claassen

2

그것들은 동일합니다. Bool은 System.Boolean이 단축되었습니다. VB.net 프로그래머와 함께있을 때는 부울을 사용하십시오. C #과 Vb에서 모두 작동하므로


1

참고 그 Boolean것이다 유일한 일이었다 당신이 using System;(보통이지만, 반드시 포함하는) (당신은 그것을 쓰기하지 않는 한 System.Boolean). bool필요하지 않다using System;


0

bool은 기본 유형으로, 값 (이 경우 true / false)이 변수에 직접 저장됩니다. 부울은 객체입니다. Boolean 유형의 변수는 Boolean 객체에 대한 참조를 저장합니다. 유일한 차이점은 스토리지입니다. 객체는 항상 기본 유형보다 더 많은 메모리를 차지하지만 실제로 모든 부울 값을 bool로 변경해도 메모리 사용량에 눈에 띄는 영향을 미치지는 않습니다.

내가 틀렸어; 그것이 부울과 부울로 자바에서 작동하는 방식입니다. C #에서 bool과 Boolean은 모두 참조 유형입니다. 둘 다 변수에 직접 값을 저장하고 둘 다 널 (null)이 될 수 없으며 다른 유형 (예 : int)으로 값을 저장하려면 "convertTO"메소드가 필요합니다. 부울 클래스 내에 정의 된 정적 함수를 호출해야하는 경우에만 사용하는 것이 중요합니다.


bool그리고 Boolean한 가지 유형은 참조 유형 아니라고, 두 가지 유형하지 않습니다, 당신은에 정적 메소드를 호출 할 수 있습니다 하나의 하나의 식별자를 사용하여 유형을, 당신은 전화 사실을 필요로하지 않는 ConvertTo다른 형식으로 변환하는 방법을.
Servy

2
" boolBoolean둘 다 참조 유형"인 것은 올바르지 않습니다 . 단어 boolBoolean둘 다 동일한 유형을 참조하며 해당 유형은 참조 유형이 아닌 값 유형입니다.
Tanner Swett

감사합니다.이 필드에서 C #이 java와 동일하게 작동하는지 확인하려고했습니다. 당신은 대답을 유일하게 자바와 비교할 수 있습니다 (의도적이지 않더라도). :)
bvdb

-1

bool은 부울의 별명입니다. 별칭이하는 것은 코드가 컴파일되기 직전에 한 문자열을 다른 문자열로 대체하는 것입니다 (notepad ++의 search / replace-all 등). 런타임에 다른 것을 사용하는 것은 효과가 없습니다.

대부분의 다른 언어에서 하나는 기본 형식이고 다른 하나는 개체 형식 (C # 전문 용어의 값 형식 및 참조 형식)입니다. C #에서는 두 가지 중에서 선택할 수있는 옵션을 제공하지 않습니다. 부울 클래스에 정의 된 정적 메소드를 호출하려는 경우 자동으로 부울을 참조 유형으로 처리합니다. 새 부울 변수를 만들면 Activator.CreateInstance 메서드를 사용하지 않는 한 자동으로 변수를 참조 유형으로 처리합니다.


부울은 참조 유형이 아닌 값 유형입니다.
Servy

-2

아마도 bool은 Boolean보다 "더 가벼운"것입니다. 흥미롭게도 이것을 변경하면 :

namespace DuckbillServerWebAPI.Models
{
    public class Expense
    {
        . . .
        public bool CanUseOnItems { get; set; }
    }
}

...이에:

namespace DuckbillServerWebAPI.Models
{
    public class Expense
    {
        . . .
        public Boolean CanUseOnItems { get; set; }
    }
}

... CS 시스템을 사용하여 "시스템 사용"을 시작했습니다. 유형을 "bool"로 다시 변경하면 using 절의 머리카락이 회색으로 바뀌 었습니다.

(Visual Studio 2010, WebAPI 프로젝트)


그건 System.Boolean단지보다는 Boolean. 는 using System;그것을 허용하기 때문에 게재 된 Boolean올바르게 해석 할 수 System.Boolean. 덜 장황한 것만 큼 가볍지는 않습니다.
Nat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.