
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Parsing Command-Line Parameters
|
165
To call this method, you must also mark the calling method’s arguments with the out
keyword, shown here:
obj.ReturnDimensions(1, out height, out width, out depth);
The out arguments in this method call do not have to be initialized; they can simply
be declared and passed in to the
ReturnDimensions method. Regardless of whether
they are initialized before the method call, they must be initialized before they are
used within the
ReturnDimensions method. Even if they are not used through every
path in the
ReturnDimensions method, they still must be initialized. That is why this
method starts out with the following three lines of code:
height = 0;
width = 0;
depth = 0;
You may be wondering why you couldn’t use a ref parameter instead of the out
parameter, as both allow a method to change the value of an argument marked as
such. The answer is that an
out parameter makes the code somewhat self-documenting.
You know that when an
out parameter is encountered, this parameter is acting as a
return value. In addition, an
out parameter does not require the extra work to be ini-
tialized before it is passed in to the method, which a
ref parameter does.
The out parameter was originally designed for marshaling scenarios.
An
out parameter does not have to be marshaled when