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
리턴

메서드가 호출된 곳에 데이터를 반환하는 것

Main 메서드 밖에서 어떤 데이터 타입을 반환하는지 지정해준다.

static double Multiply(double x, double y)
{
    //double z = x * y;
    //return z;
    return x * y;
}

static void Main(string[] args)
{
    double x;
    double y;
    double result;

    Console.WriteLine("첫 번째 숫자를 입력하세요: ");
    x = Convert.ToDouble(Console.ReadLine());

    Console.WriteLine("두 번째 숫자를 입력하세요: ");
    y = Convert.ToDouble(Console.ReadLine());

    result = Multiply(x, y);

    Console.WriteLine(result);
}

 

 

 

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

25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
22. 메서드 (Methods)  (0) 2023.09.19
21. ForEach문(Foreach Loop)  (0) 2023.09.18
20. 배열(Arrays)  (0) 2023.09.14
메서드

메서드가 호출될 때마다 코드를 수행한다. 여러 번 작성하지 않고 재사용 할 수 있다는 장점이 있다.

static void Main(string[] args)
{
    singHappyBirthday();
    singHappyBirthday();
    singHappyBirthday();
}
static void singHappyBirthday()
{
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("사랑하는 당신의");
    Console.WriteLine("생일 축하합니다.");
}

 

이름을 넣어 노래를 부르기 위해 변수를 만들어보자.

static void Main(string[] args)
{
    String name = "김사람";

    singHappyBirthday();
}
static void singHappyBirthday()
{
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("사랑하는 " + name);
    Console.WriteLine("생일 축하합니다.");
}

 

다른 메서드 내의 변수를 불러올 수 없기 때문에 오류가 발생할 것이다.

 

그렇기 때문에 매개변수와 인자를 통해 메서드에 값을 전달하도록 한다.

static void Main(string[] args)
{
    String name = "김사람";

    singHappyBirthday(name);
}
static void singHappyBirthday(String name)
{
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("사랑하는 " + name);
    Console.WriteLine("생일 축하합니다.");
}

 

여러 개의 인수를 입력할 수 있다.

마찬가지로 데이터 타입과 변수명을 입력해주면 된다.

static void Main(string[] args)
{
    String name = "김사람";
    int age = 3;

    singHappyBirthday(name, age);
}
static void singHappyBirthday(String name, int age)
{
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("사랑하는 " + name + "의");
    Console.WriteLine(age + "번째 생일을");
    Console.WriteLine("생일 축하합니다.");
}

 

또한 매개변수와 변수명이 같지 않아도 된다.

static void Main(string[] args)
{
    String name = "김사람";
    int age = 3;

    singHappyBirthday(name, age);
}
static void singHappyBirthday(String who, int num)
{
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("생일 축하합니다.");
    Console.WriteLine("사랑하는 " + who + "의");
    Console.WriteLine(num + "번째 생일을");
    Console.WriteLine("생일 축하합니다.");
}

중요한 것은 데이터 타입과 값의 순서이다.

 

 

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

24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
21. ForEach문(Foreach Loop)  (0) 2023.09.18
20. 배열(Arrays)  (0) 2023.09.14
19. 계산기 프로그램(Calculator Program)  (0) 2023.09.13

+ Recent posts