>  기사  >  백엔드 개발  >  C#의 유형 캐스팅

C#의 유형 캐스팅

王林
王林원래의
2024-09-03 15:07:271144검색

C#의 유형 캐스팅은 임의의 데이터 유형을 다른 데이터 유형에 할당한 다음 이를 "유형 캐스팅"이라고 부르는 것으로 정의됩니다. 모든 프로그래밍 언어의 하위 데이터 유형 값은 자동으로 상위 데이터 유형 값으로 변환될 수 있습니다. 이 경우 데이터 손실은 없지만 상위 데이터 유형 값을 하위 데이터 유형 값으로 변환하는 경우 데이터가 손실될 가능성이 있습니다. 낮은 데이터 유형에서 상위 데이터 유형으로의 변환은 C# 컴파일러에서 자동으로 수행할 수 있지만 상위 데이터 유형에서 낮은 데이터 유형으로의 변환에는 명시적인 유형 변환이 필요합니다. 이를 "명시적 캐스팅"이라고 합니다.

long 값을 int 값으로 변환하는 것이 명시적 유형 변환인 경우를 예로 들어 보겠습니다.

명시적 캐스팅이 더 큰 데이터 유형을 더 작은 데이터 유형으로 요구하는 이유는 무엇입니까?

작은 비유를 생각해 보면 매우 명확하게 이해하실 수 있습니다. 물병 2개가 있는데 하나는 1리터이고 다른 하나는 2리터입니다. 2리터의 물병에 1리터의 물을 넘치지 않고 쉽게 부을 수 있습니다. 마찬가지로 1리터의 물병에 2리터의 물을 부으려고 할 때 2리터의 물병에 1리터 이상의 물이 들어 있으면 물이 넘칠 가능성이 있습니다. 따라서 이 경우에는 1리터 물병이 하위 데이터형이고, 2리터 물병이 상위 데이터형입니다. 물이 넘칠 가능성이 있더라도 우리는 부을 수 있는 1리터 물병에 2리터의 물을 부어 고객이 이를 수락하도록 하고 싶습니다. 개발자가 명확한 아이디어를 갖고 있는 것과 마찬가지로 상위 데이터 유형을 하위 데이터 유형으로 캐스팅하려고 해도 데이터가 손실될 수 있으므로 개발자는 이를 받아들여야 합니다.

C#의 캐스팅 유형

C#에는 2가지 유형의 캐스팅이 있습니다.

  • 명시적 유형 캐스팅
  • 암시적 유형 캐스팅: 더 작은 데이터 유형을 더 큰 데이터 유형으로 변환하는 것을 "암시적 유형 캐스팅"이라고 합니다. 이는 C# 컴파일러에 의해 자동으로 수행됩니다. 데이터 손실이 없습니다.

1. 암시적 유형 캐스팅

바이트->짧은->int->long->float->double

코드:

Bigger_dataType  variableName=smaller_dataType_Value;

2. 명시적 유형 캐스팅

큰 데이터 유형을 작은 데이터 유형으로 변환하는 것을 "명시적 유형 변환"이라고 합니다. 이는 C# 컴파일러에서 자동으로 수행되지 않습니다. 데이터가 손실될 수 있습니다. 이 작업은 개발자가 명시적으로 수행해야 합니다.

바이트->short, int, long, float, double

short->int, long, float, double

int->long, float, double

long->float, double

플로트->더블

코드:

Smaller_dataType  variableName=(Smaller_dataType)Bigger_dataType_Value;
참고: 캐스팅은 호환되는 데이터 유형에만 적용할 수 있습니다. 즉, 숫자 변환만 있는 숫자를 의미하지만 숫자와 문자열의 반대는 아닌 등을 의미합니다. 이렇게 하면 지원되지 않는 예외가 발생할 수 있습니다.

유형 변환 방법

  • ToBoolean: 유형을 부울 값으로 변환합니다.
  • ToChar: 유형을 문자 값으로 변환합니다.
  • ToByte: 값을 바이트 값으로 변환합니다.
  • ToDecimal: 값을 소수점 값으로 변환합니다.
  • ToDouble: 유형을 double 데이터 유형으로 변환합니다.
  • ToInt16: 유형을 16비트 정수로 변환합니다
  • ToInt32: 유형을 32비트 정수로 변환합니다
  • ToInt64: 유형을 64비트 정수로 변환합니다
  • ToString: 주어진 유형을 문자열로 변환합니다
  • ToUInt16: 유형을 부호 없는 16비트 정수로 변환합니다
  • ToUInt32: 유형을 부호 없는 32비트 정수로 변환합니다
  • ToUInt64: 유형을 부호 없는 64비트 정수로 변환합니다

C#에서 유형 캐스팅을 구현하는 예

다음은 언급된 몇 가지 예입니다.

예시 #1

암시적 유형 캐스팅

코드:

//including System package in C#
using System;
//Creating class
public class ImplicitTypeCasting {
// main method for application to run
public static void Main(String []args)
{
//variable declaration and initialization
int intType = 200;
// Implicit int to long casting
long longType = intType;
// Implicit long to float casting
float floatType = longType;
// Printing output of implicit conversion variables
Console.WriteLine("INT value after Implicit conversion: " +intType);
Console.WriteLine("LONG value after Implicit conversion:" +longType);
Console.WriteLine("FLOAT value after Implicit conversion: " +floatType);
}
}

출력:

C#의 유형 캐스팅

예시 #2

더 큰 유형에서 더 낮은 유형으로 시도하기 암시적 유형 캐스팅

코드:

//including System package in C#
using System;
//Creating class
public class ImplicitCastingBiggerToSmaller {
// main method for application to run
public static void Main(String []args)
{
//variable declaration and initialization
int intType = 200;
// Trying to convert int to byte Implicitly but there is compile time error
byte byteType = intType;
// Trying to convert int to short Implicitly but there is compile time error
short shortType = intType;
// Printing output of implicit conversion variables
Console.WriteLine("INT value after Implicit conversion: " +intType);
Console.WriteLine("BYTE value after Implicit conversion:" +byteType);
Console.WriteLine("SHORT value after Implicit conversion: " +shortType);
}
}

출력:

C#의 유형 캐스팅

예시 #3

명시적 유형 캐스팅

코드:

//including System package in C#
using System;
//Creating class
public class ExplicitCastingBiggerToSmaller {
// main method for application to run
public static void Main(String []args)
{
//variable declaration and initialization
int intType = 9999999;
int intType1=120;
// Trying to convert int to byte explicitly
byte byteType = (byte)intType;
byte byteType1 = (byte)intType1;
// Trying to convert int to short explicitly
short shortType = (short)intType;
short shortType1 = (short)intType1;
// Printing output of explicit conversion variables
//Given int range is not in byte and short range so there must be loss of data result into incorrect output
Console.WriteLine("BYTE value after Explicit conversion: " +byteType);
Console.WriteLine("SHORT value after Explicit conversion: " +shortType);
Console.WriteLine("\n");
// Printing output of explicit conversion variables
//Given int range is in byte and short range so there no data loss
Console.WriteLine("BYTE value after Explicit conversion: " +byteType1);
Console.WriteLine("SHORT value after Explicit conversion: " +shortType1);
}
}<strong> </strong>

출력:

C#의 유형 캐스팅

예시 #4

사전 정의된 메소드를 사용한 명시적 유형 캐스팅

코드:

//including System package in C#
using System;
//Creating class
public class ExplicitCastingBiggerToSmaller {
// main method for application to run
public static void Main(String []args)
{
//variable declaration and initialization
int intType = 9999999;
double doubleType=122.23;
float floatType=222.222f;
// Printing output of explicit convertion variables
//By using C# predefined method for type casting
Console.WriteLine("INT to STRING type value with predefined method convertion: "+Convert.ToString(intType));
Console.WriteLine("DOUBLE to INT type value with predefined method convertion: "+Convert.ToInt32(doubleType));
Console.WriteLine("FLOAT to INT type value with predefined method convertion: "+Convert.ToUInt32(floatType));
}
}

출력:

C#의 유형 캐스팅

결론

C#에는 두 가지 유형의 유형 캐스팅이 있습니다. 첫 번째첫 번째는 암시적 유형 캐스팅이고 두 번째는 명시적 유형 캐스팅입니다. 암시적 유형 캐스팅은 컴파일러에 의해 자동으로 수행되지만 이 경우 데이터가 손실될 수 있으므로 명시적 유형 캐스팅 개발자가 수행해야 합니다.

위 내용은 C#의 유형 캐스팅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.