C#/C#200제
[C#] 13일차 - 89. 메소드에 인수를 전달하는 세 가지 방법
반나무
2021. 2. 9. 19:15
1. 값에 의한 호출
인수의 값을 메소드의 매개변수에 복사한다. - C#에서의 디폴트
2. 참조에 의한 호출
ref키워드로 인수를 메소드로 전달하면 실제로는 주소를 전달
3. out에 의한 호출
메소드에서 out키워드를 사용한 변수는 호출한 곳으로 값을 내보내 줄때만 사용된다.
out키워드를 사용한 인수의 값은 메소드 내에서 사용되지 않는다.
out키워드를 사용하면 메소드에서 여러 개의 값을 return하는 효과가 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A089_MethodArguments
{
class Program
{
static void Main(string[] args)
{
int a = 3;
Sqr(a);
Console.WriteLine("Value: {0}", a); // return 받은게 아니기때문에 기존의 3이 출력된다.
int b = 3;
Sqr(ref b);
Console.WriteLine("ref: {0}", b); // return 하지않아도 참조된 값이 변했기 때문에 9가 출력된다.
string name;
int id;
GetName(out name, out id);
Console.WriteLine("out: {0} {1}", name, id);
}
private static void Sqr(int x)
{
x = x * x;
}
private static void Sqr(ref int x)
{
x = x * x;
}
private static void GetName(out string name, out int id)
{
Console.WriteLine("Enter name: ");
name = Console.ReadLine();
Console.WriteLine("Enter id: ");
id = int.Parse(Console.ReadLine());
}
}
}
반응형