Modifiers for parameters

Parameter modifierPassed by
no modifierValue
refReference
outReference

The parameters with out modifier the parameters must be assigned in the method

The parameters with ref modifier or no modifier must be assigned before passing into the method.


using System;


class Program
{
    static void change(int i)
    {
        i = i + 1;
        Console.WriteLine("in change method:" + i);
    }


    static void Main(string[] args)
    {
        int i = 2;

        change(i);

        Console.WriteLine("in main method:" + i);
    }
}

The output:


in change method:3
in main method:2

From the output we can see that changing the value in change method has no effect on the variable i in main method.

For reference type parameters the value of the reference is copied not the object itself.

The following code defines a class Rectangle. Class is a reference type.

The change method accepts the Rectangle type as its parameter.

In the change method new value is assigned to the parameter.


using System;

class Rectangle
{
    public int Width = 5;
    public int Height = 5;

}

class Program
{
    static void change(Rectangle r)
    {
        r.Width = 10;
    }
    static void Main(string[] args)
    {
        Rectangle r = new Rectangle();
        Console.WriteLine(r.Width);
        change(r);
        Console.WriteLine(r.Width);
    }
}

The output:


5
10

We can see that the main method gets the changed value from change method. The change method changes the value from the reference.

To see the effect of a copied reference we can change the code above as follows.


using System;

class Rectangle
{
    public int Width = 5;
    public int Height = 5;

}

class Program
{
    static void change(Rectangle r)
    {
        r = null;
    }

    static void Main(string[] args)
    {
        Rectangle r = new Rectangle();
        Console.WriteLine(r.Width);
        change(r);
        Console.WriteLine(r.Width);
    }
}

The output:


5
5

Even if we set the reference in change method to null, the r in the main method still points the rectangle object.

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.