수색…


비고

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 로 전달하는 데 사용됩니다. outref 와 동일하게 작동하지만 호출자가 함수를 호출하기 전에 할당 된 값을 요구하지 않습니다.

참조 매개 변수 : - 참조 매개 변수로 변수를 전달하려면 참조 매개 변수로 전달하기 전에 매개 변수를 초기화해야합니다.

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