TOPIC
    about_Ref

SHORT DESCRIPTION
    Describes how to create and use a reference variable type.

LONG DESCRIPTION
    You can use the reference variable type to permit a method to change the
    value of a variable that is passed to it. 

    When the [ref] type is associated with an object, it returns a reference
    to that object. If the reference is used with a method, the method can
    refer to the object that was passed to it. If the object is changed within
    the method, the change appears as a change in the value of the variable
    when control returns to the calling method. 

    To use referencing, the parameter must be a reference variable. If it is
    not, an InvalidArgument exception is thrown.

    The parameters used in method invocations must match the type required 
    by the methods.  

    Examples:
    
        PS> function swap([ref]$a,[ref]$b) 
        >> { 
        >>     $a.value,$b.value = $b.value,$a.value 
        >> }

        PS> $a = 1
        PS> $b = 10
        PS> $a,$b
        1
        10
        PS> swap ([ref]$a) ([ref]$b)
        PS> $a,$b
        10
        1

        PS C:\ps-test> function double
        >> {
        >>     param ([ref]$x) $x.value = $x.value * 2
        >> }

        PS C:> $number = 8
        PS C:> $number
        8
        PS C> double ([ref]$number)
        PS C> $number
        16
    
        The variable must be a reference variable.

        PS C:\ps-test> double $number
        double : Reference type is expected in argument.
        At line:1 char:7
        + double  <<<< $number
    
 
SEE ALSO
    about_Variables
    about_Environment_Variables
    about_Functions
    about_Script_Blocks
