O'Reilly logo

Learning C# 3.0 by Brian MacDonald, Jesse Liberty

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required