Return multiple values to a method caller


I read the C++ version of this question but didn't really understand it.

Can someone please explain clearly if it can be done and how?

5/9/2019 10:41:29 PM

Accepted Answer

Use .NET 4.0+'s Tuple:

For Example:

public Tuple<int, int> GetMultipleValue()
     return Tuple.Create(1,2);

Tuples with two values have Item1 and Item2 as properties.

12/16/2017 7:17:21 PM

Now that C# 7 has been released, you can use the new included Tuples syntax

(string, string, string) LookupName(long id) // tuple return type
    ... // retrieve first, middle and last from data storage
    return (first, middle, last); // tuple literal

which could then be used like this:

var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");

You can also provide names to your elements (so they are not "Item1", "Item2" etc). You can do it by adding a name to the signature or the return methods:

(string first, string middle, string last) LookupName(long id) // tuple elements have names


return (first: first, middle: middle, last: last); // named tuple elements in a literal

They can also be deconstructed, which is a pretty nice new feature:

(string first, string middle, string last) = LookupName(id1); // deconstructing declaration

Check out this link to see more examples on what can be done :)

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow