-----------------------------------------------------------

New Message on BDOTNET

-----------------------------------------------------------
From: Ritesh_Kesharwani
Message 4 in Discussion

hi 

Value parameters:

Value parameter is also called In parameter. A parameter declared with no
modifiers is a value parameter. A value parameter corresponds to a local
variable that gets its initial value from the corresponding argument
supplied in the method invocation. A method is permitted to assign new
values to a value parameter. Such assignments only affect the local storage
location represented by the value parameter-they have no effect on the
actual argument given in the method invocation.

Reference parameters:
A parameter declared with a ref modifier is a reference parameter.
Contrastingly to value parameter, a reference parameter does not make a new
storage location. Instead, a reference parameter represents the same storage
location as the variable given as the argument in the method invocation.
Within a method, a reference parameter is always considered definitely
assigned.

Output parameters:
A parameter declared with an out modifier is an output parameter. Similar to
a reference parameter, an output parameter does not create a new storage
location. Instead, an output parameter represents the same storage location
as the variable given as the argument in the method invocation. Every output
parameter of a method must be definitely assigned before the method returns.
Output parameters are typically used in methods that produce multiple return
values. 

Parameter arrays:
A parameter declared with a params modifier is a parameter array. If a
formal parameter list includes a parameter array, it must be the last
parameter in the list and it must be of a single-dimensional array type. For
example, the types string[] and string[][] can be used as the type of a
parameter array, but the type string[,] can not. It is not possible to
combine the params modifier with the ref and out modifiers.

Let us see all the above in an example.

using system;
class Data
{
public string name;
public string qualification;
}

class paramet
{
public static void Main()
{
string choice;
paramet p = new paramet();

do {
choice = p.getchoice();
choice = p.makeconclusion(choice);
Console.Write("Press any key to continue");
Console.ReadLine();
Console.WriteLine();
} while (choice != "Q" && choice != "q");

}

// To show Menu and get users choice.

string getchoice()
{

string choice;
Console.WriteLine("A -- Add name");
Console.WriteLine("R -- Refresh name");
Console.WriteLine("U -- Update name");
Console.WriteLine("N -- Notice name");
Console.WriteLine("Q -- Quit\n");
Console.WriteLine("Choice (A,R,U,N,or Q):");
choice = Console.ReadLine();
return choice;

} 

//Make Conclusion

void makeconclusion(string choice)
Data gg =new Data();
switch(choice)
{
case"A":
case"a":
gg.name="G.G.SARADHA";
gg.qualification="B.E";
this.addData(ref gg);
break;

case"R":
case"r":
gg.name="G.N.VADIVAMBAL";
this.refreshData(gg.name);
break;

case"U":
case"u":
gg.name="G.A.GNANAVEL";
this.updateData(out gg);
Console.WriteLine(" Name is now {0}.",gg.name);
break;

case"N":
case"n":
this.noticeData("G.G.SARADHA","G.A.GNANAVEL","G.N.VADIVAMBAL");
break;

case"Q":
case"q":
Console.WriteLine("THANK YOU");
break;
default:
Console.WriteLine("{0} is not a Valid choice",choice) ;

}
}

void addData(ref Data gg)
{
Console.WriteLine("The Name :{0},The qualification: {1}
added.",gg.name,gg.qualification);

}

void refreshData(string name)
{
Console.WriteLine("The Name you wish to refresh:{0}.",name);

}

void updateData(out Data gg)
{
//Console.WriteLine("The Name :{0}",gg.name);//causes Error.

gg = new Data();
gg.name = "ARUNGG";
gg.qualification = "B.E";

}

void noticeData(params string[] names)
{
foreach (string name in names)
{ 
Console.WriteLine("The Name is:{0}.",name);

}

}
}

Program Description:

In the above example I use that 4 types (out, ref, params, value) of
parameters.
To illustrate the usage of parameters, I created a Data class with two
strings fields.
In Main() I call getchoice() to get the user's input and put that string in
the choice variable. Then I use the choice as an argument to
makeconclusion(). In the declaration of makeconclusion() You will notice
it's one parameter is declared as a string with the name choice. Again, this
is a new choice, separate from the caller's argument and local only to this
method. Since makeconclusion()'s choice parameter does not have any other
modifiers, it is considered a "value" parameter. The actual value of the
argument is copy on the stack. Value parameters are input only.

The Switch statement in makeconclusion() calls a method for each case. These
method calls are different from one I used in Main().Instead of using the
"p" reference ,I use the "this" keyword. "this" is a reference to the
current object. 

The addData method takes a "ref" parameter. This means the parameter is
passed as a reference. The reference is copied on the stack when it is
passed to the method. This reference still refers to the same object on the
heap as the original reference used in the caller's argument. This means any
changes to the local refrence's object also change the caller reference's
object.
The updateData() has an "out" parameter. "out" parameters are only passed
back to the calling function.

"params" is a very useful addition to the C# language. In makeconclusion() I
pass in three comma delimited string arguments. The number of arguments is
variable.In noticeData() I use a foreach loop to print each of these
strings. The "params" parameter is considered an inputonly parameter and any
changes affect the local copy only. That's all about method parameters.


Regard's

Ritesh Kesharwani
SQL Star International Ltd.
[EMAIL PROTECTED]
[EMAIL PROTECTED]
www.Riteshk.blogspot.com
Cell - 9849976150



-----------------------------------------------------------

To stop getting this e-mail, or change how often it arrives, go to your E-mail 
Settings.
http://groups.msn.com/bdotnet/_emailsettings.msnw

Need help? If you've forgotten your password, please go to Passport Member Services.
http://groups.msn.com/_passportredir.msnw?ppmprop=help

For other questions or feedback, go to our Contact Us page.
http://groups.msn.com/contact

If you do not want to receive future e-mail from this MSN group, or if you received 
this message by mistake, please click the "Remove" link below. On the pre-addressed 
e-mail message that opens, simply click "Send". Your e-mail address will be deleted 
from this group's mailing list.
mailto:[EMAIL PROTECTED]

Reply via email to