C# Language
여러 반환 값이있는 함수
수색…
비고
C #에는 고유 한 답변이 없습니다. 필요한 것입니다. 그럼에도 불구하고이 필요를 충족시키기위한 대안이 있습니다.
필자가 "소위"라는 필요성을 충족시키는 이유는 좋은 프로그래밍 원칙을 위반할 때 반환 할 값이 2 개 이상인 메소드 만 필요하기 때문입니다. 특히 Single Responsibility Principle .
따라서 2 개 이상의 값을 반환하는 함수가 필요할 때 경고를 받고 디자인을 개선하는 것이 좋습니다.
"익명 객체"+ "동적 키워드"솔루션
함수에서 익명 객체를 반환 할 수 있습니다.
public static object FunctionWithUnknowReturnValues ()
{
/// anonymous object
return new { a = 1, b = 2 };
}
그리고 결과를 동적 객체에 할당하고 그 안에있는 값을 읽습니다.
/// dynamic object
dynamic x = FunctionWithUnknowReturnValues();
Console.WriteLine(x.a);
Console.WriteLine(x.b);
튜플 솔루션
Tuple<string, MyClass>
와 같은 두 개의 템플릿 매개 변수를 사용하여 함수에서 Tuple
클래스의 인스턴스를 반환 할 수 있습니다.
public Tuple<string, MyClass> FunctionWith2ReturnValues ()
{
return Tuple.Create("abc", new MyClass());
}
아래 값을 읽으십시오.
Console.WriteLine(x.Item1);
Console.WriteLine(x.Item2);
참조 및 출력 매개 변수
ref
키워드는 Argument를 Reference 로 전달하는 데 사용됩니다. out
은 ref
와 동일하게 작동하지만 호출자가 함수를 호출하기 전에 할당 된 값을 요구하지 않습니다.
참조 매개 변수 : - 참조 매개 변수로 변수를 전달하려면 참조 매개 변수로 전달하기 전에 매개 변수를 초기화해야합니다.
Out Parameter : 변수를 out 매개 변수로 전달하려는 경우, out 매개 변수를 메소드로 전달하기 전에 변수를 초기화 할 필요가 없습니다.
static void Main(string[] args)
{
int a = 2;
int b = 3;
int add = 0;
int mult= 0;
AddOrMult(a, b, ref add, ref mult); //AddOrMult(a, b, out add, out mult);
Console.WriteLine(add); //5
Console.WriteLine(mult); //6
}
private static void AddOrMult(int a, int b, ref int add, ref int mult) //AddOrMult(int a, int b, out int add, out int mult)
{
add = a + b;
mult = a * b;
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow