수색…


변경할 수없는 참조 유형 - 문자열

// assign string from a string literal
string s = "hello";

// assign string from an array of characters
char[] chars = new char[] { 'h', 'e', 'l', 'l', 'o' };
string s = new string(chars, 0, chars.Length);

// assign string from a char pointer, derived from a string
string s;
unsafe
{
    fixed (char* charPointer = "hello")
    {
        s = new string(charPointer);
    }
}

값 유형 - char

// single character s
char c = 's';

// character s: casted from integer value
char c = (char)115;

// unicode character: single character s
char c = '\u0073';

// unicode character: smiley face
char c = '\u263a';

값 유형 - short, int, long (부호있는 16 비트, 32 비트, 64 비트 정수)

// assigning a signed short to its minimum value
short s = -32768;

// assigning a signed short to its maximum value
short s = 32767;

// assigning a signed int to its minimum value
int i = -2147483648;

// assigning a signed int to its maximum value
int i = 2147483647;

// assigning a signed long to its minimum value (note the long postfix)
long l = -9223372036854775808L;

// assigning a signed long to its maximum value (note the long postfix)
long l = 9223372036854775807L;

이러한 유형을 nullable로 만들 수도 있습니다. 즉, 일반적인 값 이외에 null도 할당 할 수 있습니다. nullable 유형의 변수가 초기화되지 않은 경우 0 대신 null이됩니다. Null 가능 유형은 유형 뒤에 물음표 (?)를 추가하여 표시됩니다.

int a; //This is now 0.
int? b; //This is now null.

값 유형 - ushort, uint, ulong (부호없는 16 비트, 32 비트, 64 비트 정수)

// assigning an unsigned short to its minimum value
ushort s = 0;

// assigning an unsigned short to its maximum value
ushort s = 65535;

// assigning an unsigned int to its minimum value
uint i = 0;

// assigning an unsigned int to its maximum value
uint i = 4294967295;

// assigning an unsigned long to its minimum value (note the unsigned long postfix)
ulong l = 0UL;

// assigning an unsigned long to its maximum value (note the unsigned long postfix)
ulong l = 18446744073709551615UL;

이러한 유형을 nullable로 만들 수도 있습니다. 즉, 일반적인 값 이외에 null도 할당 할 수 있습니다. nullable 유형의 변수가 초기화되지 않은 경우 0 대신 null이됩니다. Null 가능 유형은 유형 뒤에 물음표 (?)를 추가하여 표시됩니다.

uint a; //This is now 0.
uint? b; //This is now null.

값 유형 - bool

// default value of boolean is false
bool b;
//default value of nullable boolean is null
bool? z;
b = true;
if(b) {
    Console.WriteLine("Boolean has true value");
}

bool 키워드는 System.Boolean의 별칭입니다. 부울 값 ( truefalse 을 저장할 변수를 선언하는 데 사용됩니다.

박스형 값 유형과의 비교

값 유형이 object 유형의 변수에 지정되면 상자 에 저장됩니다. 값은 System.Object 의 인스턴스에 저장됩니다. 이로 인해 값을 == 와 비교할 때 예기치 않은 결과가 발생할 수 있습니다. 예 :

object left = (int)1;  // int in an object box
object right = (int)1; // int in an object box

var comparison1 = left == right;      // false

예상 된 결과를 제공 할 오버로드 된 Equals 메서드를 사용하면이 문제를 피할 수 있습니다.

var comparison2 = left.Equals(right); // true

또는 left 변수와 right 변수의 언 박싱을 통해 int 값을 비교할 수도 있습니다.

var comparison3 = (int)left == (int)right; // true

박스형 값 유형 변환

박스형 값 유형은 두 Type 의 변환이 유효하더라도 원래 Type 으로 unbox 될 수 있습니다. 예 :

object boxedInt = (int)1; // int boxed in an object

long unboxedInt1 = (long)boxedInt; // invalid cast

이것은 원래 Type 으로 unboxing함으로써 피할 수 있습니다. 예를 들면 다음과 같습니다 :

long unboxedInt2 = (long)(int)boxedInt; // valid


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow