Returning Multiple Values

Methods can return only a single value, but this isn’t always convenient. Suppose you have a class called Doubler, which contains a method we’ll call DoubleInt( ) that takes two integers and doubles them. Simple enough, right?

The problem is that although DoubleInt( ) can accept two integers, and can process them both, it can return only one of them. Example 8-3 shows a way that you might try to write DoubleInt( ).

Example 8-3. This is our first attempt at retrieving multiple values

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example_8_3_ _ _ _Returning_multiple_values
{
    class Doubler
    {
        public void DoubleInt(int firstNum, int secondNum)
        {
            firstNum = firstNum * 2;
            secondNum = secondNum * 2;
        }
    }
    class Tester
    {
        public void Run( )
        {
            int first = 5;
            int second = 10;
            Console.WriteLine("Before doubling:");
            Console.WriteLine("First number: {0}, Second number: {1}",
                              first, second);

            Doubler d = new Doubler( );
            d.DoubleInt(first, second);
            Console.WriteLine("After doubling:");
            Console.WriteLine("First number: {0}, Second number: {1}",
                              first, second);
        }

        static void Main(string[] args)
        {
            Tester t = new Tester( );
            t.Run( );
        }
    }
}

The output will look something like this:

Before doubling:
First number: 5, Second number: 10
After doubling:
First number: 5, Second number: 10

Obviously, that’s not the desired result. The problem is with the parameters. You pass in two integer parameters to DoubleInt( ), and you modify those two ...

Get Learning C# 3.0 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.