반응형

C# 타입 캐스팅

C#에는 두 가지 유형의 타입 캐스팅이 있다. 암시적 캐스팅과 명시적 캐스팅이다.

 

Implicit Casting(암시적 캐스팅) 

더 작은 크기의 유형을 더 큰 크기의 유형으로 전달할 때 암시적 캐스팅이 자동으로 수행한다.Automatic casting이라고도 한다.

예시:

int myInt = 9;
double myDouble = myInt;       // Automatic casting: int to double

Console.WriteLine(myInt);      // Outputs 9
Console.WriteLine(myDouble);   // Outputs 9

Explicit Casting(명시적 캐스팅)

명시적 캐스팅은 값 앞에 괄호 안에 유형을 배치하여 수동으로 수행한다.Manual casting이라고도 한다.

예시:

double myDouble = 9.78;
int myInt = (int) myDouble;    // Manual casting: double to int

Console.WriteLine(myDouble);   // Outputs 9.78
Console.WriteLine(myInt);      // Outputs 9

Type Conversion Methods(유형 변환 방법)

Convert.ToBoolean, Convert.ToDouble, Convert.ToString, Convert.ToInt32(int)Convert.ToInt64(long)와 같은 내장 메서드를 사용하여 명시적으로 데이터 형식을 변환한다.

예시:

int myInt = 10;
double myDouble = 5.25;
bool myBool = true;

Console.WriteLine(Convert.ToString(myInt));    // convert int to string
Console.WriteLine(Convert.ToDouble(myInt));    // convert int to double
Console.WriteLine(Convert.ToInt32(myDouble));  // convert double to int
Console.WriteLine(Convert.ToString(myBool));   // convert bool to string
  • 변환이 왜 필요한가? : 유형 변환이 필요한 경우는 많지 않다고 한다. 사용자 입력 등에서 작업할 때 사용되기도 한다. 아래 예시를 살펴보자.
Console.WriteLine("Enter your age:");
int age = Convert.ToInt32(Console.ReadLine()); // string으로 입력받은 값을 Int로 변환 후 age에 할당
Console.WriteLine("Your age is: " + age);

매개변수

Parameter(매개변수) & Arguments(인수)

  1. Parameter(매개변수) : 매개변수는 메소드 내에서 변수 역할을 한다. 원하는 만큼 추가 할 수 있고, 쉼표로 구분한다.
  2. Arguments(인수) : 매개변수가 메소드에 전달되면 이를 인수라고 한다.

예시:

static void MyMethod(string fname) // fname == Parameters
{
  Console.WriteLine(fname + " Refsnes");
}

static void Main(string[] args)
{
  MyMethod("Liam"); // Liam and 2 others == Arguments
  MyMethod("Jenny");
  MyMethod("Anja");
}

Multiple Parameters(다중 매개변수)

static void MyMethod(string fname, int age) // 두 개의 매개변수
{
  Console.WriteLine(fname + " is " + age);
}

static void Main(string[] args)
{
  MyMethod("Liam", 5);
  MyMethod("Jenny", 8);
  MyMethod("Anja", 31);
}

Default Parameter Value(기본 매개변수 값)

등호(=)를 사용하여 기본 매개변수 값을 사용한다.

static void MyMethod(string country = "Norway")
{
  Console.WriteLine(country);
}

static void Main(string[] args)
{
  MyMethod("Sweden");
  MyMethod("India");
  MyMethod(); // 매개변수를 지정해주지 않았으므로 Norway가 출력된다.
  MyMethod("USA");
}

// Sweden
// India
// Norway
// USA

Return Values(반환값)

메소드가 값을 반환하도록 하려면 void 대신 기본 데이터 유형(예: int 또는 double)을 사용하고 메소드 내부에서 return 키워드를 사용한다.

static int MyMethod(int x)
{
  return 5 + x;
}

static void Main(string[] args)
{
  Console.WriteLine(MyMethod(3));
}

// Outputs 8 (5 + 3)

반환값을 변수에 저장 하는 것도 가능하다.

static int MyMethod(int x, int y)
{
  return x + y;
}

static void Main(string[] args)
{
  int z = MyMethod(5, 3);
  Console.WriteLine(z);
}

// Outputs 8 (5 + 3)

Named Arguments

key: value 구문을 사용하여 인수를 보내는 것도 가능하다.

static void MyMethod(string child1, string child2, string child3)
{
  Console.WriteLine("The youngest child is: " + child3);
}

static void Main(string[] args)
{
  MyMethod(child3: "John", child1: "Liam", child2: "Liam");
}

// The youngest child is: John

Method Overloading

메소드 오버로딩을 사용하면 여러 메소드가 서로 다른 매개변수를 사용하여 동일한 이름을 가질 수 있다.

static int PlusMethod(int x, int y)
{
  return x + y;
}

static double PlusMethod(double x, double y)
{
  return x + y;
}

static void Main(string[] args)
{
  int myNum1 = PlusMethod(8, 5);
  double myNum2 = PlusMethod(4.3, 6.26);
  Console.WriteLine("Int: " + myNum1);
  Console.WriteLine("Double: " + myNum2);
}
반응형

+ Recent posts