조건 연산자

조건이 참 또는 거짓인 경우 조건부적으로 배치된다.

double temperature = 20;
Console.WriteLine((temperature >= 15) ? "날씨가 따듯하네요." : "날씨가 춥네요.");

위의 조건은 참이므로 앞의 메세지가 출력된다.

if~else문을 일부 대체 할 수 있으며 짧아서 쓰기 편리하다.

 

 

'C# > C#' 카테고리의 다른 글

28. 문자열 보간(String Interpolation)  (0) 2023.10.12
26. 예외 처리(Exception)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
예외

예외란 실행 중 발생하는 오류이다.

 

try: 예외가 발생할 수 있는 코드를 시도한다.

catch: 예외가 발생했을 때 발견하고 처리한다.

finally: 예외가 발생하든 안하든 상관없이 항상 실행한다.

 

int x;
int y;
double result;

try
{
    Console.Write("숫자1: ");
    x = Convert.ToInt32(Console.ReadLine());

    Console.Write("숫자2: ");
    y = Convert.ToInt32(Console.ReadLine());

    result = x / y;

    Console.WriteLine("결과: " + result);
}
catch (FormatException e)
{
    Console.WriteLine("숫자만 입력해주세요.");
}
catch (DivideByZeroException e)
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}
catch (Exception e)
{
    Console.WriteLine("예기치 못한 오류가 발생헀습니다.");
}

catch문은 여러 개를 추가할 수 있다. 예상치 못한 오류가 발생할 경우를 대비하기 위해 Exception e 예외를 마지막에 추가한다.

 

finally는 예외가 발생했는지 여부에 상관없이 실행되기 때문에 보통 try-catch문 뒤에 실행되도록 한다.

double x;
double y;
double result;

try
{
    Console.Write("숫자1: ");
    x = Convert.ToInt32(Console.ReadLine());

    Console.Write("숫자2: ");
    y = Convert.ToInt32(Console.ReadLine());

    result = x / y;

    Console.WriteLine("결과: " + result);
}
catch (FormatException e)
{
    Console.WriteLine("숫자만 입력해주세요.");
}
catch (DivideByZeroException e)
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}
catch (Exception e)
{
    Console.WriteLine("예기치 못한 오류가 발생헀습니다.");
}
finally
{
    Console.WriteLine("실행이 완료되었습니다.");
}

finally는 일반적으로 리셋하기 위해 열려있는 파일을 모두 닫게 만들 때 사용한다.

 

'C# > C#' 카테고리의 다른 글

28. 문자열 보간(String Interpolation)  (0) 2023.10.12
27. 조건 연산자(Conditional Operator)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
params 키워드

가변 인수를 받는 메서드 매개변수. 매개변수 유형은 단일 차원 배열이어야 한다.

고객이 원하는 물건의 가격의 총액을 반환하는 메서드가 있다고 하자. 

static double CheckOut(double a)
{
    return a;
}
static double CheckOut(double a, double b)
{
    return a + b;
}
static double CheckOut(double a, double b, double c)
{
    return a + b + c;
}
static void Main(string[] args)
{
    double tortal = CheckOut(3.99, 5.57, 15);

    Console.WriteLine(tortal);
}

물건이 하나일 때, 2개일 때, 3개일 때 등 경우가 다양할 것이다. 그때마다 메서드를 새로 만들기는 번거로울 것이다.

params 키워드는 단일 메서드를 다양한 경우의 메서드가 필요한 경우에 사용할 수 있다.

static double CheckOut(params double[] prices)
{
    double total = 0;

    foreach (double price in prices) 
    {
        total += price;
    }

    return total;
}
static void Main(string[] args)
{
    double tortal = CheckOut(3.99, 5.75, 15, 1.00, 10.25);

    Console.WriteLine(tortal);
}

params 키워드를 사용하기 위해서는 params라는 단어가 포함된 데이터 타입과 대괄호([ ])를 사용하면 된다. 그럼 매개변수는 배열이 된다. 총액을 반환하기 위해 지역변수를 생성한다. 그리고 각 루프에 대해 반복하여 가격들을 더하기 위해 foreach문을 사용한다.이제 매개변수의 갯수를 다양하게 입력할 수 있다.

 

 

'C# > C#' 카테고리의 다른 글

27. 조건 연산자(Conditional Operator)  (0) 2023.10.11
26. 예외 처리(Exception)  (0) 2023.10.11
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
22. 메서드 (Methods)  (0) 2023.09.19
오버로딩

메서드의 이름은 같지만 다른 매개변수를 공유한다.

즉, 메서드는 같은 이름을 공유할 수 있지만 그러기 위해서는 다른 매개변수가 필요하다.

static double Multiply (double a, double b)
{
    return a * b;
}

static void Main(string[] args)
{
    double total;

    total = Multiply(2, 3);

    Console.WriteLine(total);
}

두 개의 숫자를 곱셈하는 메서드이기 때문에 세 개의 매개변수를 넣을 수 없다.

같은 이름의 변수명으로 세 개의 매개변수를 넣어 계산하는 메서드를 만들면 사용할 수 있다.

static double Multiply (double a, double b)
{
    return a * b;
}

static double Multiply(double a, double b, double c)
{
    return a * b * c;
}

static void Main(string[] args)
{
    double total;

    total = Multiply(2, 3, 4);

    Console.WriteLine(total);
}

 

 

'C# > C#' 카테고리의 다른 글

26. 예외 처리(Exception)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
23. 리턴(Return Keyword)  (0) 2023.09.20
22. 메서드 (Methods)  (0) 2023.09.19
21. ForEach문(Foreach Loop)  (0) 2023.09.18

+ Recent posts