sizeof(C# 참조)sizeof (C# Reference)

관리되지 않는 형식의 크기(바이트)를 가져오는 데 사용됩니다.Used to obtain the size in bytes for an unmanaged type. 관리되지 않는 형식에는 뒤에 나오는 표에 나열된 기본 제공 형식과 다음 형식이 포함됩니다.Unmanaged types include the built-in types that are listed in the table that follows, and also the following:

  • 열거형Enum types

  • 포인터 형식Pointer types

  • 참조 형식인 필드 또는 속성을 포함하지 않는 사용자 정의 구조체User-defined structs that do not contain any fields or properties that are reference types

다음 예제에서는 int의 크기를 검색하는 방법을 보여 줍니다.The following example shows how to retrieve the size of an int:

// Constant value 4:  
int intSize = sizeof(int);   


C# 버전 2.0부터 기본 제공 형식에 sizeof를 적용하기 위해 비안전 모드를 사용할 필요가 없습니다.Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.

sizeof 연산자를 오버로드할 수 없습니다.The sizeof operator cannot be overloaded. sizeof 연산자에서 반환되는 값은 int 형식입니다.The values returned by the sizeof operator are of type int. 다음 표에서는 특정 기본 제공 형식이 피연산자로 포함된 sizeof 식을 대체하는 상수 값을 보여 줍니다.The following table shows the constant values that are substituted for sizeof expressions that have certain built-in types as operands.

Expression 상수 값Constant value
sizeof(sbyte) 11
sizeof(byte) 11
sizeof(short) 22
sizeof(ushort) 22
sizeof(int) 44
sizeof(uint) 44
sizeof(long) 88
sizeof(ulong) 88
sizeof(char) 2(유니코드)2 (Unicode)
sizeof(float) 44
sizeof(double) 88
sizeof(decimal) 1616
sizeof(bool) 11

구조체를 비롯한 다른 모든 형식의 경우 sizeof 연산자는 안전하지 않은 코드 블록에서만 사용할 수 있습니다.For all other types, including structs, the sizeof operator can be used only in unsafe code blocks. Marshal.SizeOf 메서드를 사용할 수 있지만 이 메서드에서 반환된 값이 sizeof에서 반환된 값과 항상 같지는 않습니다.Although you can use the Marshal.SizeOf method, the value returned by this method is not always the same as the value returned by sizeof. Marshal.SizeOf는 형식이 마샬링된 후의 크기를 반환하는 반면, sizeof는 안쪽 여백을 포함하여 공용 언어 런타임에 의해 할당된 크기를 반환합니다.Marshal.SizeOf returns the size after the type has been marshaled, whereas sizeof returns the size as it has been allocated by the common language runtime, including any padding.


class MainClass
    // unsafe not required for primitive types
    static void Main()
        Console.WriteLine("The size of short is {0}.", sizeof(short));
        Console.WriteLine("The size of int is {0}.", sizeof(int));
        Console.WriteLine("The size of long is {0}.", sizeof(long));
    The size of short is 2.
    The size of int is 4.
    The size of long is 8.

C# 언어 사양C# Language Specification

자세한 내용은 C# 언어 사양을 참조하세요. C# 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.

참고 항목See Also

C# 참조C# Reference
C# 프로그래밍 가이드C# Programming Guide
C# 키워드C# Keywords
연산자 키워드Operator Keywords
안전하지 않은 코드 및 포인터Unsafe Code and Pointers