C #에서, int
그리고 Int32
같은 일이지만, 나는 여러 번 읽어했습니다 int
이상이 바람직하다 Int32
주어진없는 이유를. 이유가 있습니까? 걱정해야합니까?
답변
ECMA-334 : 2006 C # 언어 사양 (p18) :
사전 정의 된 각 유형은 시스템 제공 유형의 약어입니다. 예를 들어 키워드
int
는 struct를 나타냅니다System.Int32
. 스타일 문제로 전체 시스템 유형 이름을 사용하는 것보다 키워드를 사용하는 것이 좋습니다.
답변
두 사람은 실제로 동의어입니다. int
좀 더 친숙하게 보일 것 Int32
입니다. 코드를 읽는 사람들에게는 32 비트가 더 명확 해집니다. 크기가 중요한 (암호화 코드, 구조) int
필요한 ‘정수’가 필요한 곳 에서 사용 하는 경향이 Int32
있으므로 향후 유지 관리 담당자는 int
적절한 경우 확대하는 것이 안전하다는 것을 알 수 있지만 Int32
동일한 방식으로 s를 변경해야합니다 .
결과 코드는 동일합니다. 차이점은 순전히 가독성 또는 코드 모양 중 하나입니다.
답변
둘 다 32 비트 정수를 선언하고 다른 포스터에서 언급했듯이 사용하는 것은 대부분 구문 스타일의 문제입니다. 그러나 항상 같은 방식으로 작동하지는 않습니다. 예를 들어 C # 컴파일러는 다음을 허용하지 않습니다.
public enum MyEnum : Int32
{
member1 = 0
}
그러나 이것을 허용합니다 :
public enum MyEnum : int
{
member1 = 0
}
그림을 이동.
답변
항상 시스템 유형을 사용합니다 (예 : Int32
대신) int
. 필자는 Applied .NET Framework Programming 을 읽은 후이 방법을 채택했습니다. 저자 Jeffrey Richter는 전체 유형 이름을 사용하는 좋은 사례를 만듭니다. 나에게 붙어있는 두 가지 요점이 있습니다.
-
형식 이름은 .NET 언어마다 다를 수 있습니다. 예를 들어 C #에서는
long
System.Int64에 매핑되고 C ++에서는 관리되는 확장명long
이 Int32에 매핑됩니다. .NET을 사용하는 동안 언어를 혼합하여 사용할 수 있으므로 독자가 선호하는 언어에 관계없이 명시 적 클래스 이름을 사용하는 것이 항상 더 명확해질 것입니다. -
많은 프레임 워크 메소드는 메소드 이름의 일부로 유형 이름을 갖습니다.
BinaryReader br = new BinaryReader( /* ... */ ); float val = br.ReadSingle(); // OK, but it looks a little odd... Single val = br.ReadSingle(); // OK, and is easier to read
답변
int는 C # 키워드이며 모호하지 않습니다.
대부분의 경우 중요하지 않지만 Int32에 대해 두 가지가 있습니다.
- “사용 시스템”이 있어야합니다. 성명서. “int”를 사용하면 using 문이 필요하지 않습니다.
- Int32라는 자체 클래스를 정의하는 것이 가능합니다 (어리 석고 혼란 스러울 수 있음). int는 항상 int를 의미합니다.
답변
이미 언급했듯이 int
= Int32
. 안전을 위해 데이터 유형 경계에 관심이있는 것을 구현할 때는 항상 int.MinValue
/를 사용하십시오 int.MaxValue
. .NET int
이 이제 하기로 결정했다고 가정하면 Int64
코드는 범위에 덜 의존적입니다.
답변
단일 언어 만 처리해야하는 경우 (및 수학 오버플로를 생각 나지 않아도되는 코드의 경우) 형식의 바이트 크기는 그리 흥미롭지 않습니다. 흥미로운 부분은 한 언어를 다른 언어로, C #에서 COM 개체로 연결하거나 비트 이동 또는 마스킹을 수행 할 때 자신과 코드 검토 공동 작업자를 상기시켜야 할 때입니다. 데이터 크기의.
실제로 관리되는 C ++ (예 : C #에 연결)과 관리되지 않는 / 네이티브 C ++을 작성하기 때문에 Int32를 사용하여 크기를 생각 나게합니다.
C #에서는 64 비트이지만 네이티브 C ++에서는 32 비트로 끝나거나 char은 유니 코드 / 16 비트이며 C ++에서는 8 비트입니다. 그러나 우리는 이것을 어떻게 알 수 있습니까? 답은 매뉴얼에서 찾아 보았 기 때문입니다.
시간과 경험을 통해 C #과 다른 언어를 연결하는 코드를 작성할 때 (여기에서 독자는 “왜 그런가?”라고 생각하는 경우) 더 양심적으로 시작하지만 IMHO는 이것이 더 나은 연습이라고 믿습니다. 지난 주에 코딩 한 내용을 기억할 수 없습니다 (또는 API 문서에서 “이 매개 변수는 32 비트 정수”임)를 지정할 필요가 없습니다.
F # 에서는 (사용한 적이 없지만) int 을 정의합니다 . int32 및 nativeint 합니다. 같은 질문이 “내가 사용하는 것은 무엇입니까?” 다른 사람들이 언급했듯이, 대부분의 경우 중요하지 않습니다 (투명해야 함). 그러나 나는 모호성을 제거하기 위해 int32와 uint32를 선택했습니다.
Int32를 언제 사용 해야하는지 정당화하기 위해 코딩하는 응용 프로그램, 누가 사용하고 있는지, 코딩 관행에 따라 달라지는 것 같습니다.