5
메서드에서 반환되지 않지만 출력 매개 변수 인 튜플을 분해 할 수 있습니까? 나는 정확하게 자신을 표현하거나 적절한 용어를 사용하고 있는지 확신 할 수 없으므로 다음은 몇 가지 예입니다.ValueTuple 매개 변수를 해체 할 수 있습니까?
void OutMethod(out (int aNumber, string someText) output)
=> output = (15, "yo");
void Usage()
{
{
// Works, of course.
OutMethod(out var tuple);
// But *slightly* aesthetically unappealing to use.
var usage = $"{tuple.someText}: {tuple.aNumber}";
}
{
// Would be awesome, but doesn't work.
OutFunction(out var(number, text));
}
{
// Would be awesome too, but doesn't work.
OutFunction(out (var number, var text));
}
{
// This doesn't work either.
OutFunction((out var number, out var text));
}
{
// Not even this.
OutFunction((out int number, out string text));
}
{
// Or this.
OutMethod(out (int number, string text));
}
{
// Or this.
int number;
string text;
OutMethod(out (number, text));
}
}
BTW, 불평하지 않습니다. 내가 뭔가를 놓치고 있는지 궁금해.
두 개의 다른 'out'변수를 쉽게 만들 수 있기 때문에 'out'매개 변수에서 튜플 해체를 허용하는 것이 무의미하다는 것을 알 수 있습니다. – DavidG
@DavidG 제네릭 형식이 아닙니다. 이것은'Dictionary'에서 가능한 한 우아하게'TryGetValue'를 사용하려고했기 때문에 제 경우에 나타났습니다. –
그 시점에서, 아마도 튜플이 어쨌든 사용하기에 적합한 유형인지 궁금 할 것입니다. 아마도 구조체 또는 클래스가 더 적절할 것입니까? – DavidG