int 또는 Int32를 사용해야합니까


352

C #에서, int그리고 Int32같은 일이지만, 나는 여러 번 읽어했습니다 int이상이 바람직하다 Int32주어진없는 이유를. 이유가 있습니까? 걱정해야합니까?


API를 프로그래밍 할 때 Int32를 int보다 선호하는 Skeet의 트윗 입니다.
comecme

@JohnBubriski : 그리고 그것을 사용하기 위해 사용하는 문장이 적다는 것을 잊지 말자. (또는 타이핑 할 것이다 System.Int32)
sehe

질문이 있습니다 : 우리는 CLR 유형을 직접 사용하지 않지만 왜 우리가 필요합니까 ??
AminM

@JohnBubriski Facebook 상태 업데이트는 코드보다 입력하기 쉽습니다. 거기에 나쁜 생각! 쉽게 읽고 이해하는 것이 입력하기 쉬운 것보다 훨씬 중요합니다. When something can be read without effort, great effort has gone into its writing. Easy writing is hard reading
7hi4g0

답변:


134

ECMA-334 : 2006 C # 언어 사양 (p18) :

사전 정의 된 각 유형은 시스템 제공 유형의 약어입니다. 예를 들어 키워드 int는 struct를 나타냅니다 System.Int32. 스타일 문제로 전체 시스템 유형 이름을 사용하는 것보다 키워드를 사용하는 것이 좋습니다.


271

두 사람은 실제로 동의어입니다. int좀 더 친숙하게 보일 것 Int32입니다. 코드를 읽는 사람들에게는 32 비트가 더 명확 해집니다. 크기가 중요한 (암호화 코드, 구조) int필요한 '정수'가 필요한 곳 에서 사용 하는 경향이 Int32있으므로 향후 유지 관리 담당자는 int적절한 경우 확대하는 것이 안전하다는 것을 알 수 있지만 Int32동일한 방식으로 s를 변경해야합니다 .

결과 코드는 동일합니다. 차이점은 순전히 가독성 또는 코드 모양 중 하나입니다.


65
코드를 읽는 사람들은 int가 System.Int32의 별칭이라는 것을 알고 있어야합니다. 가독성과 관련하여 일관성이 훨씬 중요합니다.
Troels Thomsen

11
구식 C ++ 마인드를 가진 사람들을 위해 IntPtr은 32 비트 OS에서 32 비트, 64 비트 OS에서 64 비트로 설계되었습니다. 이 동작은 요약 태그에 구체적으로 언급되어 있습니다. msdn.microsoft.com/ko-kr/library/system.intptr(VS.71).aspx
diadem

87

둘 다 32 비트 정수를 선언하고 다른 포스터에서 언급했듯이 사용하는 것은 대부분 구문 스타일의 문제입니다. 그러나 항상 같은 방식으로 작동하지는 않습니다. 예를 들어 C # 컴파일러는 다음을 허용하지 않습니다.

public enum MyEnum : Int32
{
    member1 = 0
}

그러나 이것을 허용합니다 :

public enum MyEnum : int
{
    member1 = 0
}

그림을 이동.


9
Reflector를 사용하여 System.Int32 유형을 검사하면 클래스가 아닌 구조체임을 알 수 있습니다. 코드는 다음과 같습니다. [Serializable, StructLayout (LayoutKind.Sequential), ComVisible (true)] public struct Int32 : IComparable, IFormattable, IConvertible, IComparable <int>, IEquatable <int> {public const int MaxValue = 0x7fffffff; ... 구조체에서 형식을 파생시킬 수 없습니다. 적어도 당신에게 알려주는 오류가 발생합니다. 그러나 열거 형 동작은 약간 다르므로 다음에 설명하겠습니다.
raddevus 님이

16
Int32에서 열거 형을 파생시킬 수 없다는 것은 설계된 동작이며 .NET 코드를 통해 확인할 수도 있습니다. [Serializable, ComVisible (true)] public abstract class Enum : ValueType, IComparable, IFormattable, Enum이 파생되었음을 확인하십시오. ValueType에서? 내장 데이터 형식 (int, byte 등) 이외의 항목에서 열거 형을 파생하려고하면 다음과 같은 오류가 발생합니다. Type byte, sbyte, short, ushort, int, uint, long 또는 ulong .
raddevus 님이

2
@daylight 참고 enum로 사용할 지정은 inta derive가 아니라 underlying type; msdn.microsoft.com/en-us/library/sbbt4032.aspx#code-snippet-2
Jeroen Wiert Pluimers를

2
@JeroenWiertPluimers 그러나 기본 유형이 열거 형의 상수 유형이므로 문자 그대로 기본 유형을 확인하고 CS1008을 던지 도록 선택한 이유는 여전히 흥미 롭습니다. 따라서 컴파일 할 때 실제로 중요하지 않습니다.
IllidanS4는 Monica를

5
@ IllidanS4, 새로운 컴파일러 Roslyn과 함께-이 문제는 해결되었으며 두 가지 변형 모두 유효
Grundy

49

항상 시스템 유형을 사용합니다 (예 : Int32대신) int. 필자는 Applied .NET Framework Programming 을 읽은 후이 방법을 채택했습니다. 저자 Jeffrey Richter는 전체 유형 이름을 사용하는 좋은 사례를 만듭니다. 나에게 붙어있는 두 가지 요점이 있습니다.

  1. 형식 이름은 .NET 언어마다 다를 수 있습니다. 예를 들어 C #에서는 longSystem.Int64에 매핑되고 C ++에서는 관리되는 확장명 long이 Int32에 매핑됩니다. .NET을 사용하는 동안 언어를 혼합하여 사용할 수 있으므로 독자가 선호하는 언어에 관계없이 명시 적 클래스 이름을 사용하는 것이 항상 더 명확해질 것입니다.

  2. 많은 프레임 워크 메소드는 메소드 이름의 일부로 유형 이름을 갖습니다.

    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

이것의 문제는 Visual Studio 자동 완성 기능이 여전히 int를 사용한다는 것입니다. 따라서을 만들면 List<Tuple<Int32, Boolean>> test = newVisual Studio가 삽입 List<Tuple<int, bool>>()됩니다. 이 자동 완성을 변경하는 방법을 알고 있습니까?
MrFox

2
예, 문제입니다. 아니, 나는 그것들을 손으로 바꾸는 방법을 모른다. 포인트 # 2는 더 이상 문제가되지 않습니다 var. 코드의 단어를 줄이기 위해 가능한 한 많이 사용하는 경향이 있습니다 . 자동 완성이 들어오고 바닥에 침을 뱉는 간헐적으로는 수동으로 조정합니다. 문자 그대로 두 번째 또는 두 번째 시간입니다.
Remi Despres-Smyth

20

int는 C # 키워드이며 모호하지 않습니다.

대부분의 경우 중요하지 않지만 Int32에 대해 두 가지가 있습니다.

  • "사용 시스템"이 있어야합니다. 성명서. "int"를 사용하면 using 문이 필요하지 않습니다.
  • Int32라는 자체 클래스를 정의하는 것이 가능합니다 (어리 석고 혼란 스러울 수 있음). int는 항상 int를 의미합니다.

자신 만의 'var'클래스를 만들 수도 있지만 사람들이 클래스를 사용하지 못하게하지는 않습니다.
Neme

모든 키워드는 C # 키워드입니다. int는 이미 C와 C ++에서 사용되었습니다. 따라서 특별히 C #은 없습니다.
MrFox

12

이미 언급했듯이 int= Int32. 안전을 위해 데이터 유형 경계에 관심이있는 것을 구현할 때는 항상 int.MinValue/를 사용하십시오 int.MaxValue. .NET int이 이제 하기로 결정했다고 가정하면 Int64코드는 범위에 덜 의존적입니다.


8
@spoulson : 1 행의 주석 오류 : 동일한 유형간에 할당이 금지되었습니다. 예, 나쁜 농담입니다.
Johann Gerell

22
이제까지 변경하기로 결정는 C # 사양이 (가 C #을하지 .NET 결정의) 할 경우 int64 비트를, 그 것 같은 그런 사태에 대한 방어 코드 나는 그것이 가능 (또는 확실히 분별)의 믿지 않는 주요 변경.
Jon Skeet

9

단일 언어 만 처리해야하는 경우 (및 수학 오버플로를 생각 나지 않아도되는 코드의 경우) 형식의 바이트 크기는 그리 흥미롭지 않습니다. 흥미로운 부분은 한 언어를 다른 언어로, C #에서 COM 개체로 연결하거나 비트 이동 또는 마스킹을 수행 할 때 자신과 코드 검토 공동 작업자를 상기시켜야 할 때입니다. 데이터 크기의.

실제로 관리되는 C ++ (예 : C #에 연결)과 관리되지 않는 / 네이티브 C ++을 작성하기 때문에 Int32를 사용하여 크기를 생각 나게합니다.

C #에서는 64 비트이지만 네이티브 C ++에서는 32 비트로 끝나거나 char은 유니 코드 / 16 비트이며 C ++에서는 8 비트입니다. 그러나 우리는 이것을 어떻게 알 수 있습니까? 답은 매뉴얼에서 찾아 보았 기 때문입니다.

시간과 경험을 통해 C #과 다른 언어를 연결하는 코드를 작성할 때 (여기에서 독자는 "왜 그런가?"라고 생각하는 경우) 더 양심적으로 시작하지만 IMHO는 이것이 더 나은 연습이라고 믿습니다. 지난 주에 코딩 한 내용을 기억할 수 없습니다 (또는 API 문서에서 "이 매개 변수는 32 비트 정수"임)를 지정할 필요가 없습니다.

F # 에서는 (사용한 적이 없지만) int 을 정의합니다 . int32nativeint 합니다. 같은 질문이 "내가 사용하는 것은 무엇입니까?" 다른 사람들이 언급했듯이, 대부분의 경우 중요하지 않습니다 (투명해야 함). 그러나 나는 모호성을 제거하기 위해 int32와 uint32를 선택했습니다.

Int32를 언제 사용 해야하는지 정당화하기 위해 코딩하는 응용 프로그램, 누가 사용하고 있는지, 코딩 관행에 따라 달라지는 것 같습니다.


.net의 목적을 무효화하지 않습니까? F 번호는 어쨌든 무엇입니까 멀리 그의 은퇴에 갔다 게이츠가 가지고 있던 생각 ...
닉 터너

8

이 사이에는 차이가 없다 int하고 Int32, 그러나로 int하는 언어는 많은 사람들이 (단지와 같은 문체를 선호하는 키워드 stringString).


7

내 경험상 그것은 관습적인 일이었습니다. Int32보다 int를 사용해야하는 기술적 이유는 알지 못하지만 다음과 같습니다.

  1. 더 빨리 입력하십시오.
  2. 일반적인 C # 개발자에게 친숙합니다.
  3. 기본 Visual Studio 구문 강조에서 다른 색상.

나는 그 마지막 것을 특히 좋아합니다. :)


7

변수를 정의 할 때는 항상 별칭 형식 (int, string 등)을 사용하고 정적 메서드에 액세스 할 때는 실제 이름을 사용합니다.

int x, y;
...
String.Format ("{0}x{1}", x, y);

int.TryParse ()와 같은 것을 보는 것은 추악한 것 같습니다. 스타일 이외의 다른 이유는 없습니다.


5

최선의 방법은 int를 사용하는 것이며 모든 MSDN 코드는 int를 사용한다는 것을 알고 있습니다. 그러나 내가 아는 한 표준화와 일관성을 넘어서는 이유는 없습니다.


5

그것들은 (주로) 동일하지만 (하나의 버그 차이에 대해서는 아래를 참조하십시오), 반드시주의를 기울여야하고 Int32를 사용해야합니다.

  • 16 비트 정수의 이름은 Int16입니다. 64 비트 정수의 경우 Int64이고 32 비트 정수의 경우 직관적 인 선택은 int 또는 Int32?

  • Int16, Int32 또는 Int64 유형의 변수 크기에 대한 질문은 자체 참조이지만 int 유형의 변수 크기에 대한 질문은 완벽하게 유효한 질문이며, 사소한, 산만, 리드 혼란, 낭비 시간, 토론 방해 등 (이 질문이 존재한다는 것이 요점을 증명합니다).

  • Int32를 사용하면 개발자가 유형 선택을 의식하게됩니다. int는 얼마나 큰가요? 예, 32. 이름에 크기가 포함되면 실제로 유형의 크기가 고려 될 가능성이 더 큽니다. Int32를 사용하면 다른 선택에 대한 지식도 향상됩니다. 사람들이 적어도 인식하도록 강요받지 않으면 대안이 있기 때문에 int가 "THE integer type"이 되기에는 너무 쉬워집니다.

  • 32 비트 정수와 상호 작용하기위한 프레임 워크 내의 클래스 이름은 Int32입니다. 다시 한번,이다 : 더 직관적 인, 덜 혼란, (불필요한) 번역 부족 (안 시스템의 번역을하지만, 개발자의 마음), 등 int lMax = Int32.MaxValue또는 Int32 lMax = Int32.MaxValue?

  • int는 모든 .NET 언어의 키워드가 아닙니다.

  • 변경 될 가능성이없는 이유가 있지만 int가 항상 Int32 인 것은 아닙니다.

단점은 입력 할 두 개의 추가 문자와 [버그]입니다.

이것은 컴파일되지 않습니다

public enum MyEnum : Int32
{
    AEnum = 0
}

그러나 이것은 :

public enum MyEnum : int
{
    AEnum = 0
}

"16 비트 정수의 이름은 Int16이고 64 비트 정수의 경우 Int64이고 32 비트 정수의 경우 직관적 인 선택은 int 또는 Int32?"라고 말하지만 C # 키워드도 있습니다. Int16 = short Int64 = long 따라서 답 중 하나는 잘못된 가정에 근거한 것입니다.
Mel

"int 유형의 변수는 아무리 사소하고 산만하든 혼란, 낭비 시간, 토론 방해 등 (이 질문이 존재한다는 사실이 그 요점을 증명합니다)에 상관없이 완벽하게 유효한 질문과 질문입니다." 농담 해? 당신은 후드 뒤에 무엇이 있는지 완전히 이해하지 못하는 언어로 일합니다. 개발자가 프리미티브 유형이 무엇을 의미하는지 이해하지 못하면 요리 기술을 사용해야합니다. VB 개발자처럼 들립니다. 프리미티브 사용은 모든 언어에 고유하며 선호해야합니다. 프리미티브를 좋아하지 않지만 현실을 구성하지 않으면 괜찮습니다.
Nick Turner

흠, 나는 당신이 신경 써야한다는 당신의 의견에 완전히 동의하지 않습니다 ...하지만 열거 형은 키워드에서만 상속받을 수 있다는 것을 몰랐습니다. 꽤 쓸모없는 사실이지만, 여전히 재미있다 :)
Jowen

4

당신은 상관하지 않아야합니다. int대부분의 시간을 사용해야합니다 . 나중에 프로그램을 더 넓은 아키텍처로 이식하는 데 도움이 될 것입니다 (현재 int는 별명 System.Int32이지만 변경 될 수 있음). 변수의 비트 너비가 중요한 경우에만 (예 : a의 메모리에서 레이아웃을 제어하기 위해 struct) int32다른 것들과 연관된 " using System;" 를 사용해야합니다 .


1
당신은 진지 할 수 없습니다 ... 포팅을 더 쉽게 하시겠습니까? 찾기 및 바꾸기가 큰 문제라고 생각하지 않습니다.
Vince Panuccio

2
(현재 int는 System.Int32의 별칭이지만 변경 될 수 있습니다) ? 오 하나만 오세요 ... 진심 이세요?
Oybek

결국 쓰레기를 버리고 싶은 언어로 코드를 작성하는 이유는 무엇입니까? 경영진의 결정처럼 보입니다. int 또는 Int32를 사용하십시오. Int32는 VB처럼 보입니다
Nick Turner

내가 의미했던 것은 MAYBE (그리고 그것은 아마도 큰 MAYBE입니다. 디자이너가 그렇게하는 이유를 정말로 알지 못합니다) 당신은 당신이 실행중인 아치와 같은 너비를 가진 int를 선언하는 방법이 있어야합니다. C의 int / long / ...처럼 작동합니다. 이것은 정확히 이것을 수행하도록 설계된 메커니즘 (int int32와 별개)입니다. Microsoft는 항상 "int"대 "Int32"를 사용하는 것이 좋습니다 (원래 의도 인 경우와 동일). 나는 이것이 큰 IF라는 것을 알고 있습니다 ...이 답변을 쓸 때 64 비트 .NET 프레임 워크가 없으므로 그 경우에 그들이 무엇을 할 것인지 몰랐습니다.
Yanko Hernández Alvarez

3

int는 System에 대한 C # 언어의 바로 가기입니다.

이것이 Microsoft가이 매핑을 변경할 수 있음을 의미하지만 FogCreek의 토론에 대한 게시물은 [source]

"64 비트 문제에서 Microsoft는 실제로 64 비트 버전의 .NET Framework에서 작업하고 있지만 int는 해당 시스템에서 64 비트로 매핑되지 않을 것입니다.

원인:

1. C # ECMA 표준에 따르면 int는 32 비트이고 long은 64 비트입니다.

2. Microsoft는 Array.GetLength 외에도 Array.GetLongLength와 같은 int 값 대신 long 값을 반환하는 추가 속성 및 메서드를 Framework 버전 1.1에 도입했습니다.

따라서 모든 내장 C # 유형이 현재 매핑을 유지한다고 말하는 것이 안전하다고 생각합니다. "


64 비트 버전이 도입되면 C #에 'nativeint'를 추가 할 수 있습니다 (현재 F #에서 사용됨). 이것은 단지 'int'를 도입하고 이것을 Int32로 정의하는 것이 실수라는 것을 강조합니다! 따라서 API (예 : ReadInt32 ReadInt가 아닌 ReadInt32), 색상 (진한 하늘색) 및 대소 문자 구분 (DateTime vs int) 관점과 일치하지 않습니다. 즉, 왜 값 유형 'DateTime'에 Int32와 같은 별칭이 없습니까?
Carlo Bos

3

int는 System.Int32와 동일하며 컴파일되면 CIL 에서 동일한 것으로 바뀝니다 .

C #은 C 및 C ++ (및 Java)처럼 보이고 싶기 때문에 C #에서 규칙에 따라 int를 사용합니다.

BTW, 다양한 Windows API 함수 가져 오기를 선언 할 때 System.Int32를 사용합니다. 이것이 정의 된 규칙인지 여부는 확실하지 않지만 외부 DLL로 이동한다는 것을 상기시킵니다 ...


3

옛날 옛적에, int 데이터 타입은 컴파일러가 목표로하는 머신의 레지스터 크기에 고정되었습니다. 예를 들어 16 비트 시스템의 컴파일러는 16 비트 정수를 사용합니다.

그러나 우리는 더 이상 16 비트를 더 이상 보지 못하고 64 비트가 인기를 얻기 시작했을 때 사람들이 이전 소프트웨어와 호환되도록하는 데 더 관심이 있었고 32 비트는 너무 오래되어 대부분의 컴파일러가 int 32 비트로 가정합니다.


3

Microsoft의 StyleCop을 사용하는 것이 좋습니다 .

그것은 비슷 합니다 FxCop 하지만 스타일 관련 문제. 기본 구성은 Microsoft의 내부 스타일 가이드와 일치하지만 프로젝트에 맞게 사용자 지정할 수 있습니다.

익숙해 지려면 약간의 시간이 걸릴 수 있지만 코드를 더 멋지게 만듭니다.

빌드 프로세스에 포함시켜 위반을 자동으로 확인할 수 있습니다.


나는 이것에 대해 StyleCop에 완전히 동의하지 않습니다. 예, 좋지만 Int32를 선호합니다. 왜 그렇습니까? 두 개의 downvoted 것과 같은 답변을 피하기 위해. 사람들은 Int32와 C의 int 표현 방법을 혼동합니다
John Demetriou

2

intInt32동일합니다. int의 별칭입니다 Int32.


int는 별칭이 아니며 키워드입니다. 다른 답변을 참조하십시오.
Timores

int는 분명히 언어의 키워드이지만 System.Int32의 별칭이라고도 할 수 있습니다. 또한 이것을 생각하는 또 다른 방법 using int = System.Int32; 은 모든 소스 코드 파일에 대한 지시문을 가지고 있다는 것 입니다.
uygar donduran

2

당신은 걱정해서는 안됩니다. 크기가 문제라면 byte, short, int, long을 사용합니다. int32보다 큰 int를 사용하는 유일한 이유는 2147483647보다 크거나 -2147483648보다 작은 숫자가 필요한 경우입니다.

내가 신경 쓰지 않을 것 외에는 걱정할 다른 많은 항목이 있습니다.


System.Int64 대신 키워드 "long"을 사용할 수 있다고
Keith

22
당신은 그 질문을 오해했습니다. OP는 "int i"선언과 "Int32 i"선언 사이에 차이가 있는지 묻습니다.
raven September

2

실제로는 아무런 차이가 없으며 시간이 지나면 자체 컨벤션을 채택하게됩니다. 유형을 지정할 때 키워드를 사용하는 경향이 있고 정적 메소드를 사용할 때 클래스 버전을 사용하는 경향이 있습니다.

int total = Int32.Parse("1009");


1

Microsoft가 정수의 기본 구현을 새로운 fangled 버전으로 변경하는 경우 int를 사용합니다 (Int32b라고 부릅니다).

그런 다음 Microsoft는 int 별칭을 Int32b로 변경할 수 있으며 새로운 (그리고 희망적으로 개선 된) 정수 구현을 이용하기 위해 코드를 변경할 필요가 없습니다.

모든 유형 키워드에 대해서도 마찬가지입니다.


0

매우 구체적인 수학 함수를 작성하거나 특정 아키텍처에 최적화 된 코드를 작성해야하는 경우가 아니라면 대부분의 프로그래밍 언어에서는 신경 쓰지 말아야합니다. 예를 들어 32 비트 이상이 필요하다는 것을 알고 있습니다)



0

Int 또는 Int32의 사용은 동일합니다. Int는 독자의 코드를 단순화하기 위해 설탕입니다.

Nullable 변형 Int를 사용 하시겠습니까? 또는 Int32? 널을 포함하는 필드에서 데이터베이스로 작업 할 때. 많은 런타임 문제를 피할 수 있습니다.


0

일부 컴파일러는 다른 플랫폼에서 int에 대해 크기가 다릅니다 (C # 특정하지 않음)

일부 코딩 표준 (MISRA C)에서는 사용 된 모든 유형의 크기를 지정해야합니다 (즉, Int32가 아니라 int).

다른 유형 변수에 접두사를 지정하는 것도 좋습니다 (예 : 8 비트 바이트의 경우 b, 16 비트 워드의 경우 w, 32 비트 긴 워드의 경우 l).> Int32 lMyVariable

코드를보다 이식 가능하고 유지 관리하기 쉽기 때문에주의해야합니다.

항상 C #을 사용하고 C # 사양이 이와 관련하여 변경되지 않는 경우 Portable은 C #에 적용되지 않을 수 있습니다.

코드를 관리하는 사람이이 특정 C # 사양을 인식하지 못하고 가끔 2147483647 이상이 된 버그를 놓치기 때문에 유지 관리 가능한 ihmo는 항상 적용 가능합니다.

예를 들어 일년의 달과 같은 간단한 for-loop에서는 신경 쓰지 않지만 변수가 흐름에 영향을 줄 수있는 상황에서 변수를 사용할 때는주의해야합니다.

비트 단위 작업을 수행 할 것인지도주의해야합니다.


.Net에 차이가 없습니다. int는 항상 Int32이고 long은 항상 Int64입니다.
Keith

It is also good to specify prefixes for different type variables헝가리어 표기법은 요즘 대부분 사용되지 않으며 대부분의 코딩 스타일에서는 사용하지 않는 것이 좋습니다. 소프트웨어 회사의 내부 협약은 종종 그 표기법을 금지합니다
phuclv

0

Int32형식을 사용 하려면 네임 스페이스에 대한 참조 System또는 정규화 ( System.Int32)가 필요합니다. int네임 스페이스 가져 오기가 필요하지 않으므로 네임 스페이스 충돌 가능성을 줄이기 때문에을 향해 경향이 있습니다. IL로 컴파일 할 때 둘 사이에는 차이가 없습니다.


0

Visual Studio 2012의 직접 실행 창에 따르면 Int32는 int이고 Int64는 길다. 출력은 다음과 같습니다.

sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
Int64
long
    base {System.ValueType}: System.ValueType
    MaxValue: 9223372036854775807
    MinValue: -9223372036854775808
int
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648

0

Int16도 고려하십시오. 응용 프로그램의 Integer를 메모리에 메모리에 저장해야하고 사용되는 메모리의 양이 걱정된다면 Int16은 Int32보다 적은 메모리를 사용하고 최소 / 최대 범위가 작기 때문에 Int16을 사용할 수 있습니다 (int는 무엇입니까? .)


0

얼마 전 저는 Microsoft .NET CLR 제품 팀의 누군가를 방문했을 때 Microsoft와 함께 프로젝트를 진행했습니다. 이 사람은 예제를 코딩하고 변수를 정의 할 때 "Int32"대 "int"및 "String"대 "string"을 사용했습니다.

Microsoft의 다른 예제 코드에서이 스타일을 본 것을 기억했습니다. 그래서 나는 약간의 연구를 한 결과, 구문 색을 제외하고는“Int32”와“int”사이에 차이가 없다고 말하는 사람들이 모두 있습니다. 사실, 코드를 더 읽기 쉽게하기 위해“Int32”를 사용하는 것이 좋습니다. 그래서 스타일을 채택했습니다.

다른 날 나는 차이를 발견했다! 컴파일러에서는 "Int32"를 사용하여 enum을 입력 할 수 없지만 "int"를 사용할 때는 수행합니다. 내가 아직 모르기 때문에 이유를 묻지 마십시오.

예:

public  enum MyEnum : Int32
{
    AEnum = 0
}

작동합니다.

public enum MyEnum : int
{
    AEnum = 0
}

에서 촬영 : INT32 표기 대 INT

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.