값 형식(C# 참조)Value types (C# Reference)

다음 두 가지 종류의 값 형식이 있습니다.There are two kinds of value types:

값 형식의 주요 기능Main features of value types

값 형식의 변수에는 형식의 값이 포함되어 있습니다.A variable of a value type contains a value of the type. 예를 들어 int 형식의 변수에는 42 값이 포함될 수 있습니다.For example, a variable of the int type might contain the value 42. 이는 개체라고도 하는 형식 인스턴스에 대한 참조를 포함하는 참조 형식의 변수와 다릅니다.This differs from a variable of a reference type, which contains a reference to an instance of the type, also known as an object. 값 형식의 변수에 새 값을 할당하면 해당 값이 복사됩니다.When you assign a new value to a variable of a value type, that value is copied. 참조 형식의 변수에 새 값을 할당하면 개체 자체가 아니라 참조가 복사됩니다.When you assign a new value to a variable of a reference type, the reference is copied, not the object itself.

모든 값 형식은 System.ValueType에서 암시적으로 파생됩니다.All value types are derived implicitly from the System.ValueType.

참조 형식과 달리 값 형식에서는 새 형식을 파생할 수 없습니다.Unlike with reference types, you cannot derive a new type from a value type. 그러나 참조 형식과 마찬가지로 구조체가 인터페이스를 구현할 수 있습니다.However, like reference types, structs can implement interfaces.

값 형식 변수는 기본적으로 null일 수 없습니다.Value type variables cannot be null by default. 그러나 해당 nullable 형식의 변수는 null일 수 있습니다.However, variables of the corresponding nullable types can be null.

각 값 형식에는 해당 형식의 기본값을 초기화하는 암시적 매개 변수 없는 생성자가 있습니다.Each value type has an implicit parameterless constructor that initializes the default value of that type. 값 형식의 기본값에 대한 자세한 내용은 기본값 표를 참조하세요.For information about default values of value types, see Default values table.

단순 형식Simple types

단순 형식은 C#에서 제공하는 미리 정의된 구조체 형식 세트이며, 다음과 같은 형식으로 구성됩니다.The simple types are a set of predefined struct types provided by C# and comprise the following types:

단순 형식은 키워드를 통해 식별되지만, 이러한 키워드는 단순히 System 네임스페이스에 미리 정의된 구조체 형식의 별칭입니다.The simple types are identified through keywords, but these keywords are simply aliases for predefined struct types in the System namespace. 예를 들어 intSystem.Int32의 별칭입니다.For example, int is an alias of System.Int32. 별칭의 전체 목록은 기본 제공 형식 표를 참조하세요.For a complete list of aliases, see Built-in types table.

단순 형식은 특정 추가 작업을 허용한다는 점에서 다른 구조체 형식과는 다릅니다.The simple types differ from other struct types in that they permit certain additional operations:

  • 리터럴을 사용하여 단순 형식을 초기화할 수 있습니다.Simple types can be initialized by using literals. 예를 들어 'A'char 형식의 리터럴이고, 2001int 형식의 리터럴입니다.For example, 'A' is a literal of the type char and 2001 is a literal of the type int.

  • const 키워드를 사용하여 단순 형식의 상수를 선언할 수 있습니다.You can declare constants of the simple types with the const keyword. 다른 구조체 형식의 상수는 사용할 수 없습니다.It's not possible to have constants of other struct types.

  • 해당 피연산자가 모두 단순 형식 상수인 상수 식은 컴파일 시간에 계산됩니다.Constant expressions, whose operands are all simple type constants, are evaluated at compile time.

자세한 내용은 C# 언어 사양단순 형식 섹션을 참조하세요.For more information, see the Simple types section of the C# language specification.

값 형식 초기화Initializing value types

C#의 지역 변수는 사용하기 전에 초기화해야 합니다.Local variables in C# must be initialized before they are used. 예를 들어 다음 예제와 같이 초기화하지 않고 지역 변수를 선언할 수 있습니다.For example, you might declare a local variable without initialization as in the following example:

int myInt;

초기화하기 전에는 사용할 수 없습니다.You cannot use it before you initialize it. 다음 문을 사용하여 초기화할 수 있습니다.You can initialize it using the following statement:

myInt = new int();  // Invoke parameterless constructor for int type.

이 문은 다음 문과 같습니다.This statement is equivalent to the following statement:

myInt = 0;         // Assign an initial value, 0 in this example.

물론, 다음 예제와 같이 선언과 초기화를 동일한 문에 포함할 수 있습니다.You can, of course, have the declaration and the initialization in the same statement as in the following examples:

int myInt = new int();

– 또는 ––or–

int myInt = 0;

new 연산자를 사용하면 특정 형식의 매개 변수 없는 생성자가 호출되고 변수에 기본값이 할당됩니다.Using the new operator calls the parameterless constructor of the specific type and assigns the default value to the variable. 앞의 예제에서는 매개 변수 없는 생성자가 0 값을 myInt에 할당했습니다.In the preceding example, the parameterless constructor assigned the value 0 to myInt. 기본 생성자를 호출하여 할당된 값에 대한 자세한 내용은 기본값 표를 참조하세요.For more information about values assigned by calling default constructors, see Default values table.

사용자 정의 형식의 경우 new를 사용하여 매개 변수 없는 생성자를 호출합니다.With user-defined types, use new to invoke the parameterless constructor. 예를 들어 다음 명령문은 Point 구조체의 매개 변수 없는 생성자를 호출합니다.For example, the following statement invokes the parameterless constructor of the Point struct:

Point p = new Point(); // Invoke parameterless constructor for the struct.

이 호출 후에는 구조체가 한정적으로 할당된 것으로 간주됩니다. 즉, 모든 멤버가 기본값으로 초기화됩니다.After this call, the struct is considered to be definitely assigned; that is, all its members are initialized to their default values.

new 연산자에 대한 자세한 내용은 new를 참조하세요.For more information about the new operator, see new.

숫자 형식의 출력에 서식을 지정하는 방법에 대한 자세한 내용은 숫자 결과 형식 지정 표를 참조하세요.For information about formatting the output of numeric types, see Formatting numeric results table.

참고 항목See also