C#의 유형 캐스팅은 임의의 데이터 유형을 다른 데이터 유형에 할당한 다음 이를 "유형 캐스팅"이라고 부르는 것으로 정의됩니다. 모든 프로그래밍 언어의 하위 데이터 유형 값은 자동으로 상위 데이터 유형 값으로 변환될 수 있습니다. 이 경우 데이터 손실은 없지만 상위 데이터 유형 값을 하위 데이터 유형 값으로 변환하는 경우 데이터가 손실될 가능성이 있습니다. 낮은 데이터 유형에서 상위 데이터 유형으로의 변환은 C# 컴파일러에서 자동으로 수행할 수 있지만 상위 데이터 유형에서 낮은 데이터 유형으로의 변환에는 명시적인 유형 변환이 필요합니다. 이를 "명시적 캐스팅"이라고 합니다.
long 값을 int 값으로 변환하는 것이 명시적 유형 변환인 경우를 예로 들어 보겠습니다.
작은 비유를 생각해 보면 매우 명확하게 이해하실 수 있습니다. 물병 2개가 있는데 하나는 1리터이고 다른 하나는 2리터입니다. 2리터의 물병에 1리터의 물을 넘치지 않고 쉽게 부을 수 있습니다. 마찬가지로 1리터의 물병에 2리터의 물을 부으려고 할 때 2리터의 물병에 1리터 이상의 물이 들어 있으면 물이 넘칠 가능성이 있습니다. 따라서 이 경우에는 1리터 물병이 하위 데이터형이고, 2리터 물병이 상위 데이터형입니다. 물이 넘칠 가능성이 있더라도 우리는 부을 수 있는 1리터 물병에 2리터의 물을 부어 고객이 이를 수락하도록 하고 싶습니다. 개발자가 명확한 아이디어를 갖고 있는 것과 마찬가지로 상위 데이터 유형을 하위 데이터 유형으로 캐스팅하려고 해도 데이터가 손실될 수 있으므로 개발자는 이를 받아들여야 합니다.
C#에는 2가지 유형의 캐스팅이 있습니다.
바이트->짧은->int->long->float->double
코드:
Bigger_dataType variableName=smaller_dataType_Value;
큰 데이터 유형을 작은 데이터 유형으로 변환하는 것을 "명시적 유형 변환"이라고 합니다. 이는 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;참고: 캐스팅은 호환되는 데이터 유형에만 적용할 수 있습니다. 즉, 숫자 변환만 있는 숫자를 의미하지만 숫자와 문자열의 반대는 아닌 등을 의미합니다. 이렇게 하면 지원되지 않는 예외가 발생할 수 있습니다.
다음은 언급된 몇 가지 예입니다.
암시적 유형 캐스팅
코드:
//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); } }
출력:
더 큰 유형에서 더 낮은 유형으로 시도하기 암시적 유형 캐스팅
코드:
//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); } }
출력:
명시적 유형 캐스팅
코드:
//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>
출력:
사전 정의된 메소드를 사용한 명시적 유형 캐스팅
코드:
//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#의 유형 캐스팅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!