3.22. Returning Multiple Items from a Method
Problem
In many cases, a single return value for a method is not enough. You need a way to return more than one item from a method.
Solution
Use the out
keyword on
parameters that will act as return parameters. The following method
accepts an inputShape
parameter and calculates
height
, width
, and
depth
from that
value:
public void ReturnDimensions(int inputShape, out int height, out int width, out int depth) { height = 0; width = 0; depth = 0; // Calculate height, width, depth from the inputShape value }
This method would be called in the following manner:
// Declare output parameters int height; int width; int depth; // Call method and return the height, width, and depth Obj.ReturnDimensions(1, out height, out width, out depth);
Another method is to return a class or structure containing all the
return values. The previous method has been modified to return a
structure instead of using out
arguments:
public Dimensions ReturnDimensions(int inputShape) { // The default ctor automatically defaults this structure's members to 0 Dimensions objDim = new Dimensions( ); // Calculate objDim.Height, objDim.Width, objDim.Depth from the inputShape value return (objDim); }
where Dimensions
is defined as follows:
public struct Dimensions { int Height; int Width; int Depth; }
This method would now be called in this manner:
// Call method and return the Height, Width, and Depth Dimensions objDim = obj.ReturnDimensions(1);
Discussion
Marking a parameter in a method ...
Get C# Cookbook 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.