<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FLanguage_Basics%2FParameters_Passing</id>
		<title>Csharp/C Sharp/Language Basics/Parameters Passing - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FLanguage_Basics%2FParameters_Passing"/>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/Parameters_Passing&amp;action=history"/>
		<updated>2026-04-20T10:44:14Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/Parameters_Passing&amp;diff=754&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/Parameters_Passing&amp;diff=754&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/Parameters_Passing&amp;diff=755&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/Parameters_Passing&amp;diff=755&amp;oldid=prev"/>
				<updated>2010-05-26T11:39:47Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==C# Ref and Out Parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class Point&lt;br /&gt;
{&lt;br /&gt;
    public Point(int x, int y)&lt;br /&gt;
    {&lt;br /&gt;
        this.x = x;&lt;br /&gt;
        this.y = y;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void GetPoint(ref int x, ref int y)&lt;br /&gt;
    {&lt;br /&gt;
        x = this.x;&lt;br /&gt;
        y = this.y;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
}&lt;br /&gt;
public class RefOutParameters2&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Point myPoint = new Point(10, 15);&lt;br /&gt;
        int x = 0;&lt;br /&gt;
        int y = 0;&lt;br /&gt;
        &lt;br /&gt;
        myPoint.GetPoint(ref x, ref y);&lt;br /&gt;
        Console.WriteLine(&amp;quot;myPoint({0}, {1})&amp;quot;, x, y);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstrate params==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Demonstrate params. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Min { &lt;br /&gt;
  public int minVal(params int[] nums) { &lt;br /&gt;
    int m; &lt;br /&gt;
 &lt;br /&gt;
    if(nums.Length == 0) { &lt;br /&gt;
      Console.WriteLine(&amp;quot;Error: no arguments.&amp;quot;); &lt;br /&gt;
      return 0; &lt;br /&gt;
    } &lt;br /&gt;
 &lt;br /&gt;
    m = nums[0]; &lt;br /&gt;
    for(int i=1; i &amp;lt; nums.Length; i++)  &lt;br /&gt;
      if(nums[i] &amp;lt; m) m = nums[i]; &lt;br /&gt;
 &lt;br /&gt;
    return m; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class ParamsDemo { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    Min ob = new Min(); &lt;br /&gt;
    int min; &lt;br /&gt;
    int a = 10, b = 20; &lt;br /&gt;
 &lt;br /&gt;
    // call with two values &lt;br /&gt;
    min = ob.minVal(a, b); &lt;br /&gt;
    Console.WriteLine(&amp;quot;Minimum is &amp;quot; + min); &lt;br /&gt;
 &lt;br /&gt;
    // call with 3 values &lt;br /&gt;
    min = ob.minVal(a, b, -1); &lt;br /&gt;
    Console.WriteLine(&amp;quot;Minimum is &amp;quot; + min); &lt;br /&gt;
 &lt;br /&gt;
    // call with 5 values &lt;br /&gt;
    min = ob.minVal(18, 23, 3, 14, 25); &lt;br /&gt;
    Console.WriteLine(&amp;quot;Minimum is &amp;quot; + min); &lt;br /&gt;
 &lt;br /&gt;
    // can call with an int array, too &lt;br /&gt;
    int[] args = { 45, 67, 34, 9, 112, 8 }; &lt;br /&gt;
    min = ob.minVal(args); &lt;br /&gt;
    Console.WriteLine(&amp;quot;Minimum is &amp;quot; + min); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Illustrates the use of out parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Mastering Visual C# .NET&lt;br /&gt;
by Jason Price, Mike Gunderloy&lt;br /&gt;
Publisher: Sybex;&lt;br /&gt;
ISBN: 0782129110&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
  Example5_8.cs illustrates the use of out parameters&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// declare the MyMath class&lt;br /&gt;
class MyMath&lt;br /&gt;
{&lt;br /&gt;
  // the SinAndCos() method returns the sin and cos values for&lt;br /&gt;
  // a given angle (in radians)&lt;br /&gt;
  public void SinAndCos(double angle, out double sin, out double cos) {&lt;br /&gt;
    sin = System.Math.Sin(angle);&lt;br /&gt;
    cos = System.Math.Cos(angle);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Example5_8&lt;br /&gt;
{&lt;br /&gt;
  public static void Main()&lt;br /&gt;
  {&lt;br /&gt;
    // declare and set the angle in radians&lt;br /&gt;
    double angle = System.Math.PI / 2;&lt;br /&gt;
    // declare the variables that will be used as out paramters&lt;br /&gt;
    double sin;&lt;br /&gt;
    double cos;&lt;br /&gt;
    // create a MyMath object&lt;br /&gt;
    MyMath myMath = new MyMath();&lt;br /&gt;
    // get the sin and cos values from the SinAndCos() method&lt;br /&gt;
    myMath.SinAndCos(angle, out sin, out cos);&lt;br /&gt;
    // display sin and cos&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;sin = &amp;quot; + sin + &amp;quot;, cos = &amp;quot; + cos);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objects are passed by reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Objects are passed by reference. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Test { &lt;br /&gt;
  public int a, b; &lt;br /&gt;
 &lt;br /&gt;
  public Test(int i, int j) { &lt;br /&gt;
    a = i; &lt;br /&gt;
    b = j; &lt;br /&gt;
  }&lt;br /&gt;
  /* Pass an object. Now, ob.a and ob.b in object &lt;br /&gt;
     used in the call will be changed. */ &lt;br /&gt;
  public void change(Test ob) { &lt;br /&gt;
    ob.a = ob.a + ob.b; &lt;br /&gt;
    ob.b = -ob.b; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class CallByRef { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    Test ob = new Test(15, 20); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;ob.a and ob.b before call: &amp;quot; + &lt;br /&gt;
                       ob.a + &amp;quot; &amp;quot; + ob.b); &lt;br /&gt;
 &lt;br /&gt;
    ob.change(ob); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;ob.a and ob.b after call: &amp;quot; + &lt;br /&gt;
                       ob.a + &amp;quot; &amp;quot; + ob.b); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objects can be passed to methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Objects can be passed to methods.  &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class MyClass {  &lt;br /&gt;
  int alpha, beta; &lt;br /&gt;
  &lt;br /&gt;
  public MyClass(int i, int j) {  &lt;br /&gt;
    alpha = i;  &lt;br /&gt;
    beta = j;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  /* Return true if ob contains the same values &lt;br /&gt;
     as the invoking object. */ &lt;br /&gt;
  public bool sameAs(MyClass ob) {  &lt;br /&gt;
    if((ob.alpha == alpha) &amp;amp; (ob.beta == beta)) &lt;br /&gt;
       return true;  &lt;br /&gt;
    else return false;  &lt;br /&gt;
  }  &lt;br /&gt;
 &lt;br /&gt;
  // Make a copy of ob. &lt;br /&gt;
  public void copy(MyClass ob) { &lt;br /&gt;
    alpha = ob.alpha; &lt;br /&gt;
    beta  = ob.beta; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public void show() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;alpha: {0}, beta: {1}&amp;quot;, &lt;br /&gt;
                      alpha, beta); &lt;br /&gt;
  } &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
public class PassOb {  &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    MyClass ob1 = new MyClass(4, 5);  &lt;br /&gt;
    MyClass ob2 = new MyClass(6, 7);  &lt;br /&gt;
  &lt;br /&gt;
    Console.Write(&amp;quot;ob1: &amp;quot;); &lt;br /&gt;
    ob1.show(); &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;ob2: &amp;quot;); &lt;br /&gt;
    ob2.show(); &lt;br /&gt;
 &lt;br /&gt;
    if(ob1.sameAs(ob2))  &lt;br /&gt;
      Console.WriteLine(&amp;quot;ob1 and ob2 have the same values.&amp;quot;); &lt;br /&gt;
    else &lt;br /&gt;
      Console.WriteLine(&amp;quot;ob1 and ob2 have different values.&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
 &lt;br /&gt;
    // now, make ob1 a copy of ob2 &lt;br /&gt;
    ob1.copy(ob2); &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;ob1 after copy: &amp;quot;); &lt;br /&gt;
    ob1.show(); &lt;br /&gt;
 &lt;br /&gt;
    if(ob1.sameAs(ob2))  &lt;br /&gt;
      Console.WriteLine(&amp;quot;ob1 and ob2 have the same values.&amp;quot;); &lt;br /&gt;
    else &lt;br /&gt;
      Console.WriteLine(&amp;quot;ob1 and ob2 have different values.&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
  }  &lt;br /&gt;
} &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Parameter demo==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Learning C# &lt;br /&gt;
by Jesse Liberty&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
ISBN: 0596003765&lt;br /&gt;
*/&lt;br /&gt;
 using System;&lt;br /&gt;
 namespace ParamsDemo&lt;br /&gt;
 {&lt;br /&gt;
    public class TesterParamsDemo&lt;br /&gt;
    {&lt;br /&gt;
       public void Run()&lt;br /&gt;
       {&lt;br /&gt;
           int a = 5;&lt;br /&gt;
           int b = 6;&lt;br /&gt;
           int c = 7;&lt;br /&gt;
           Console.WriteLine(&amp;quot;Calling with three integers&amp;quot;);&lt;br /&gt;
           DisplayVals(a,b,c);&lt;br /&gt;
           Console.WriteLine(&amp;quot;\nCalling with four integers&amp;quot;);&lt;br /&gt;
           DisplayVals(5,6,7,8);&lt;br /&gt;
           Console.WriteLine(&amp;quot;\ncalling with an array of four integers&amp;quot;);&lt;br /&gt;
           int [] explicitArray = new int[4] {5,6,7,8};&lt;br /&gt;
           DisplayVals(explicitArray);&lt;br /&gt;
       }&lt;br /&gt;
        // takes a variable number of integers&lt;br /&gt;
        public void DisplayVals(params int[] intVals)&lt;br /&gt;
        {&lt;br /&gt;
            foreach (int i in intVals)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;DisplayVals {0}&amp;quot;,i);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
       [STAThread]&lt;br /&gt;
       static void Main()&lt;br /&gt;
       {&lt;br /&gt;
          TesterParamsDemo t = new TesterParamsDemo();&lt;br /&gt;
          t.Run();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Parameter out and reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;  &lt;br /&gt;
&lt;br /&gt;
class ReferenceAndOutputParamtersTest&lt;br /&gt;
{&lt;br /&gt;
   static void Main( string[] args )&lt;br /&gt;
   {&lt;br /&gt;
      int y = 5;&lt;br /&gt;
      int z; &lt;br /&gt;
      Console.WriteLine( &amp;quot;Original value of y: {0}&amp;quot;, y );&lt;br /&gt;
      Console.WriteLine( &amp;quot;Original value of z: uninitialized\n&amp;quot; );&lt;br /&gt;
      SquareRef( ref y ); // must use keyword ref&lt;br /&gt;
      SquareOut( out z ); // must use keyword out&lt;br /&gt;
      Console.WriteLine( &amp;quot;Value of y after SquareRef: {0}&amp;quot;, y );&lt;br /&gt;
      Console.WriteLine( &amp;quot;Value of z after SquareOut: {0}\n&amp;quot;, z );&lt;br /&gt;
      Square( y );&lt;br /&gt;
      Square( z );&lt;br /&gt;
      Console.WriteLine( &amp;quot;Value of y after Square: {0}&amp;quot;, y );&lt;br /&gt;
      Console.WriteLine( &amp;quot;Value of z after Square: {0}&amp;quot;, z );&lt;br /&gt;
   } &lt;br /&gt;
   static void SquareRef( ref int x )&lt;br /&gt;
   {&lt;br /&gt;
      x = x * x;&lt;br /&gt;
   }&lt;br /&gt;
   static void SquareOut( out int x )&lt;br /&gt;
   {&lt;br /&gt;
      x = 6;&lt;br /&gt;
      x = x * x;&lt;br /&gt;
   } &lt;br /&gt;
   static void Square( int x )&lt;br /&gt;
   {&lt;br /&gt;
      x = x * x;&lt;br /&gt;
   } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing parameters by reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Mastering Visual C# .NET&lt;br /&gt;
by Jason Price, Mike Gunderloy&lt;br /&gt;
Publisher: Sybex;&lt;br /&gt;
ISBN: 0782129110&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
  Example5_7.cs illustrates passing parameters by reference&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// declare the Swapper class&lt;br /&gt;
class Swapper&lt;br /&gt;
{&lt;br /&gt;
  // the Swap() method swaps parameters passed by reference&lt;br /&gt;
  public void Swap(ref int x, ref int y)&lt;br /&gt;
  {&lt;br /&gt;
    // display the initial values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Swap(): initial x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
    // swap x and y&lt;br /&gt;
    int temp = x;&lt;br /&gt;
    x = y;&lt;br /&gt;
    y = temp;&lt;br /&gt;
    // display the final values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Swap(): final   x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Example5_7&lt;br /&gt;
{&lt;br /&gt;
  public static void Main()&lt;br /&gt;
  {&lt;br /&gt;
    // declare x and y (the variables whose values&lt;br /&gt;
    // are to be swapped)&lt;br /&gt;
    int x = 2;&lt;br /&gt;
    int y = 5;&lt;br /&gt;
    // display the initial values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Main(): initial x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
    // create a Swapper object&lt;br /&gt;
    Swapper mySwapper = new Swapper();&lt;br /&gt;
    // swap the values, passing a reference to the Swap() method&lt;br /&gt;
    mySwapper.Swap(ref x, ref y);&lt;br /&gt;
    // display the final values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Main(): final   x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing parameters by value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Mastering Visual C# .NET&lt;br /&gt;
by Jason Price, Mike Gunderloy&lt;br /&gt;
Publisher: Sybex;&lt;br /&gt;
ISBN: 0782129110&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
  Example5_6.cs illustrates passing parameters by value&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// declare the Swapper class&lt;br /&gt;
class Swapper&lt;br /&gt;
{&lt;br /&gt;
  // the Swap() method swaps parameters passed by value&lt;br /&gt;
  public void Swap(int x, int y)&lt;br /&gt;
  {&lt;br /&gt;
    // display the initial values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Swap(): initial x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
    // swap x and y&lt;br /&gt;
    int temp = x;&lt;br /&gt;
    x = y;&lt;br /&gt;
    y = temp;&lt;br /&gt;
    // display the final values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Swap(): final   x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Example5_6&lt;br /&gt;
{&lt;br /&gt;
  public static void Main()&lt;br /&gt;
  {&lt;br /&gt;
    // declare x and y (the variables whose values&lt;br /&gt;
    // are to be swapped)&lt;br /&gt;
    int x = 2;&lt;br /&gt;
    int y = 5;&lt;br /&gt;
    // display the initial values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Main(): initial x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
    // create a Swapper object&lt;br /&gt;
    Swapper mySwapper = new Swapper();&lt;br /&gt;
    // swap the values in x and y&lt;br /&gt;
    mySwapper.Swap(x, y);&lt;br /&gt;
    // display the final values&lt;br /&gt;
    System.Console.WriteLine(&amp;quot;In Main(): final   x = &amp;quot; + x +&lt;br /&gt;
      &amp;quot;, y = &amp;quot; + y);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing Parameters By Value and By Ref==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * C# Programmers Pocket Consultant&lt;br /&gt;
 * Author: Gregory S. MacBeth&lt;br /&gt;
 * Email: gmacbeth@comporium.net&lt;br /&gt;
 * Create Date: June 27, 2003&lt;br /&gt;
 * Last Modified Date:&lt;br /&gt;
 */&lt;br /&gt;
using System;&lt;br /&gt;
namespace Client.Chapter_5___Building_Your_Own_Classes&lt;br /&gt;
{&lt;br /&gt;
  public class PassingParametersByValueandByRef&lt;br /&gt;
  {&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
      int MyInt = 5;&lt;br /&gt;
      MyIntArray = new int[10];&lt;br /&gt;
      ObjectCount++;&lt;br /&gt;
      Method2();&lt;br /&gt;
      Method2(1, 2);&lt;br /&gt;
      MyMethodRef(ref MyInt);&lt;br /&gt;
      Method2(new int[] { 1, 2, 3, 4 });&lt;br /&gt;
    }&lt;br /&gt;
    static private int MyInt = 5;&lt;br /&gt;
    static public int MyInt2 = 10;&lt;br /&gt;
    static public int[] MyIntArray;&lt;br /&gt;
    private static int ObjectCount = 0;&lt;br /&gt;
    static public int MyMethodRef(ref int myInt)&lt;br /&gt;
    {&lt;br /&gt;
      MyInt = MyInt + myInt;&lt;br /&gt;
      return MyInt;&lt;br /&gt;
    }&lt;br /&gt;
    static public int MyMethod(int myInt)&lt;br /&gt;
    {&lt;br /&gt;
      MyInt = MyInt + myInt;&lt;br /&gt;
      return MyInt;&lt;br /&gt;
    }&lt;br /&gt;
    static private long MyLongMethod(ref int myInt)&lt;br /&gt;
    {&lt;br /&gt;
      return myInt;&lt;br /&gt;
    }&lt;br /&gt;
    static public void Method2(params int[] args)&lt;br /&gt;
    {&lt;br /&gt;
      for (int I = 0; I &amp;lt; args.Length; I++)&lt;br /&gt;
        Console.WriteLine(args[I]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass value by reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Learning C# &lt;br /&gt;
by Jesse Liberty&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
ISBN: 0596003765&lt;br /&gt;
*/&lt;br /&gt;
 using System;&lt;br /&gt;
 namespace PassByRef&lt;br /&gt;
 {&lt;br /&gt;
     public class Time3&lt;br /&gt;
     {&lt;br /&gt;
         // private member variables&lt;br /&gt;
         private int Year;&lt;br /&gt;
         private int Month;&lt;br /&gt;
         private int Date;&lt;br /&gt;
         private int Hour;&lt;br /&gt;
         private int Minute;&lt;br /&gt;
         private int Second;&lt;br /&gt;
         // Property (read only)&lt;br /&gt;
         public int GetHour()&lt;br /&gt;
         {&lt;br /&gt;
             return Hour;&lt;br /&gt;
         }&lt;br /&gt;
         // public accessor methods&lt;br /&gt;
         public void DisplayCurrentTime()&lt;br /&gt;
         {&lt;br /&gt;
             System.Console.WriteLine(&amp;quot;{0}/{1}/{2} {3}:{4}:{5}&amp;quot;,&lt;br /&gt;
                 Month, Date, Year, Hour, Minute, Second);&lt;br /&gt;
         }&lt;br /&gt;
         public void GetTime(int h, int m, int s)&lt;br /&gt;
         {&lt;br /&gt;
             h = Hour;&lt;br /&gt;
             m = Minute;&lt;br /&gt;
             s = Second;&lt;br /&gt;
         }&lt;br /&gt;
         // constructor&lt;br /&gt;
         public Time3(System.DateTime dt)&lt;br /&gt;
         {&lt;br /&gt;
             Year = dt.Year;&lt;br /&gt;
             Month = dt.Month;&lt;br /&gt;
             Date = dt.Day;&lt;br /&gt;
             Hour = dt.Hour;&lt;br /&gt;
             Minute = dt.Minute;&lt;br /&gt;
             Second = dt.Second;&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
    public class PassByRefTester&lt;br /&gt;
    {&lt;br /&gt;
       public void Run()&lt;br /&gt;
       {&lt;br /&gt;
           System.DateTime currentTime = System.DateTime.Now;&lt;br /&gt;
           Time3 t = new Time3(currentTime);&lt;br /&gt;
           t.DisplayCurrentTime();&lt;br /&gt;
           int theHour = 0;&lt;br /&gt;
           int theMinute = 0;&lt;br /&gt;
           int theSecond = 0;&lt;br /&gt;
           t.GetTime(theHour, theMinute, theSecond);&lt;br /&gt;
           System.Console.WriteLine(&amp;quot;Current time: {0}:{1}:{2}&amp;quot;,&lt;br /&gt;
               theHour, theMinute, theSecond);&lt;br /&gt;
       }&lt;br /&gt;
       static void Main()&lt;br /&gt;
       {&lt;br /&gt;
          PassByRefTester t = new PassByRefTester();&lt;br /&gt;
          t.Run();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass value by reference with read only value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Learning C# &lt;br /&gt;
by Jesse Liberty&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
ISBN: 0596003765&lt;br /&gt;
*/&lt;br /&gt;
 using System;&lt;br /&gt;
 namespace PassByRef&lt;br /&gt;
 {&lt;br /&gt;
     public class Time&lt;br /&gt;
     {&lt;br /&gt;
         // private member variables&lt;br /&gt;
         private int Year;&lt;br /&gt;
         private int Month;&lt;br /&gt;
         private int Date;&lt;br /&gt;
         private int Hour;&lt;br /&gt;
         private int Minute;&lt;br /&gt;
         private int Second;&lt;br /&gt;
         // Property (read only)&lt;br /&gt;
         public int GetHour()&lt;br /&gt;
         {&lt;br /&gt;
             return Hour;&lt;br /&gt;
         }&lt;br /&gt;
         // public accessor methods&lt;br /&gt;
         public void DisplayCurrentTime()&lt;br /&gt;
         {&lt;br /&gt;
             System.Console.WriteLine(&amp;quot;{0}/{1}/{2} {3}:{4}:{5}&amp;quot;,&lt;br /&gt;
                 Month, Date, Year, Hour, Minute, Second);&lt;br /&gt;
         }&lt;br /&gt;
         // takes references to ints&lt;br /&gt;
         public void GetTime(ref int h, ref int m, ref int s)&lt;br /&gt;
         {&lt;br /&gt;
             h = Hour;&lt;br /&gt;
             m = Minute;&lt;br /&gt;
             s = Second;&lt;br /&gt;
         }&lt;br /&gt;
         // constructor&lt;br /&gt;
         public Time(System.DateTime dt)&lt;br /&gt;
         {&lt;br /&gt;
             Year = dt.Year;&lt;br /&gt;
             Month = dt.Month;&lt;br /&gt;
             Date = dt.Day;&lt;br /&gt;
             Hour = dt.Hour;&lt;br /&gt;
             Minute = dt.Minute;&lt;br /&gt;
             Second = dt.Second;&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
    public class TesterPassByRef&lt;br /&gt;
    {&lt;br /&gt;
       public void Run()&lt;br /&gt;
       {&lt;br /&gt;
           System.DateTime currentTime = System.DateTime.Now;&lt;br /&gt;
           Time t = new Time(currentTime);&lt;br /&gt;
           t.DisplayCurrentTime();&lt;br /&gt;
           int theHour = 0;&lt;br /&gt;
           int theMinute = 0;&lt;br /&gt;
           int theSecond = 0;&lt;br /&gt;
           // pass the ints by reference&lt;br /&gt;
           t.GetTime(ref theHour, ref theMinute, ref theSecond);&lt;br /&gt;
           System.Console.WriteLine(&amp;quot;Current time: {0}:{1}:{2}&amp;quot;,&lt;br /&gt;
               theHour, theMinute, theSecond);&lt;br /&gt;
       }&lt;br /&gt;
       static void Main()&lt;br /&gt;
       {&lt;br /&gt;
          TesterPassByRef t = new TesterPassByRef();&lt;br /&gt;
          t.Run();&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ref and Out Parameters 2==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class Point&lt;br /&gt;
{&lt;br /&gt;
    public Point(int x, int y)&lt;br /&gt;
    {&lt;br /&gt;
        this.x = x;&lt;br /&gt;
        this.y = y;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void GetPoint(out int x, out int y)&lt;br /&gt;
    {&lt;br /&gt;
        x = this.x;&lt;br /&gt;
        y = this.y;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
}&lt;br /&gt;
public class RefOutParameters3&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Point myPoint = new Point(10, 15);&lt;br /&gt;
        int x;&lt;br /&gt;
        int y;&lt;br /&gt;
        &lt;br /&gt;
        myPoint.GetPoint(out x, out y);&lt;br /&gt;
        Console.WriteLine(&amp;quot;myPoint({0}, {1})&amp;quot;, x, y);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ref and Out Parameters: compiling error==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// error&lt;br /&gt;
using System;&lt;br /&gt;
class Point&lt;br /&gt;
{&lt;br /&gt;
    public Point(int x, int y)&lt;br /&gt;
    {&lt;br /&gt;
        this.x = x;&lt;br /&gt;
        this.y = y;&lt;br /&gt;
    }&lt;br /&gt;
    // get both values in one function call&lt;br /&gt;
    public void GetPoint(ref int x, ref int y)&lt;br /&gt;
    {&lt;br /&gt;
        x = this.x;&lt;br /&gt;
        y = this.y;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
}&lt;br /&gt;
public class RefOutParameters {&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Point myPoint = new Point(10, 15);&lt;br /&gt;
        int x;&lt;br /&gt;
        int y;&lt;br /&gt;
        &lt;br /&gt;
        // illegal &lt;br /&gt;
        myPoint.GetPoint(ref x, ref y);&lt;br /&gt;
        Console.WriteLine(&amp;quot;myPoint({0}, {1})&amp;quot;, x, y);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple types are passed by value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Simple types are passed by value. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Test { &lt;br /&gt;
  /* This method causes no change to the arguments &lt;br /&gt;
     used in the call. */ &lt;br /&gt;
  public void noChange(int i, int j) { &lt;br /&gt;
    i = i + j; &lt;br /&gt;
    j = -j; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class CallByValue { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    Test ob = new Test(); &lt;br /&gt;
 &lt;br /&gt;
    int a = 15, b = 20; &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;a and b before call: &amp;quot; + &lt;br /&gt;
                       a + &amp;quot; &amp;quot; + b); &lt;br /&gt;
 &lt;br /&gt;
    ob.noChange(a, b);  &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;a and b after call: &amp;quot; + &lt;br /&gt;
                       a + &amp;quot; &amp;quot; + b); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Swap two references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Swap two references. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class RefSwap { &lt;br /&gt;
  int a, b; &lt;br /&gt;
   &lt;br /&gt;
  public RefSwap(int i, int j) { &lt;br /&gt;
    a = i; &lt;br /&gt;
    b = j; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public void show() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;a: {0}, b: {1}&amp;quot;, a, b); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  // This method now changes its arguments. &lt;br /&gt;
  public void swap(ref RefSwap ob1, ref RefSwap ob2) { &lt;br /&gt;
    RefSwap t; &lt;br /&gt;
  &lt;br /&gt;
    t = ob1; &lt;br /&gt;
    ob1 = ob2; &lt;br /&gt;
    ob2 = t; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class RefSwapDemo { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    RefSwap x = new RefSwap(1, 2); &lt;br /&gt;
    RefSwap y = new RefSwap(3, 4); &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;x before call: &amp;quot;); &lt;br /&gt;
    x.show(); &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;y before call: &amp;quot;); &lt;br /&gt;
    y.show(); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
 &lt;br /&gt;
    // exchange the objects to which x and y refer &lt;br /&gt;
    x.swap(ref x, ref y);  &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;x after call: &amp;quot;); &lt;br /&gt;
    x.show(); &lt;br /&gt;
 &lt;br /&gt;
    Console.Write(&amp;quot;y after call: &amp;quot;); &lt;br /&gt;
    y.show(); &lt;br /&gt;
 &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Swap two values==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Swap two values. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Swap { &lt;br /&gt;
  // This method now changes its arguments. &lt;br /&gt;
  public void swap(ref int a, ref int b) { &lt;br /&gt;
    int t; &lt;br /&gt;
  &lt;br /&gt;
    t = a; &lt;br /&gt;
    a = b; &lt;br /&gt;
    b = t; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class SwapDemo { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    Swap ob = new Swap(); &lt;br /&gt;
 &lt;br /&gt;
    int x = 10, y = 20; &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;x and y before call: &amp;quot; + x + &amp;quot; &amp;quot; + y); &lt;br /&gt;
 &lt;br /&gt;
    ob.swap(ref x, ref y);  &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;x and y after call: &amp;quot; + x + &amp;quot; &amp;quot; + y); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use out==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Use out. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Decompose { &lt;br /&gt;
 &lt;br /&gt;
  /* Decompose a floating-point value into its &lt;br /&gt;
      integer and fractional parts. */ &lt;br /&gt;
  public int parts(double n, out double frac) { &lt;br /&gt;
    int whole; &lt;br /&gt;
 &lt;br /&gt;
    whole = (int) n; &lt;br /&gt;
    frac = n - whole; // pass fractional part back through frac &lt;br /&gt;
    return whole; // return integer portion &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
public class UseOut { &lt;br /&gt;
  public static void Main() {   &lt;br /&gt;
   Decompose ob = new Decompose(); &lt;br /&gt;
    int i; &lt;br /&gt;
    double f; &lt;br /&gt;
 &lt;br /&gt;
    i = ob.parts(10.125, out f); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;Integer portion is &amp;quot; + i); &lt;br /&gt;
    Console.WriteLine(&amp;quot;Fractional part is &amp;quot; + f); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use ref to pass a value type by reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Use ref to pass a value type by reference. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class RefTest { &lt;br /&gt;
  /* This method changes its arguments. &lt;br /&gt;
     Notice the use of ref. */ &lt;br /&gt;
  public void sqr(ref int i) { &lt;br /&gt;
    i = i * i; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class RefDemo { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    RefTest ob = new RefTest(); &lt;br /&gt;
 &lt;br /&gt;
    int a = 10; &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;a before call: &amp;quot; + a); &lt;br /&gt;
 &lt;br /&gt;
    ob.sqr(ref a); // notice the use of ref &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(&amp;quot;a after call: &amp;quot; + a); &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use regular parameter with a params parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Use regular parameter with a params parameter. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class MyClass { &lt;br /&gt;
  public void showArgs(string msg, params int[] nums) { &lt;br /&gt;
    Console.Write(msg + &amp;quot;: &amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    foreach(int i in nums) &lt;br /&gt;
      Console.Write(i + &amp;quot; &amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
public class ParamsDemo2 { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    MyClass ob = new MyClass(); &lt;br /&gt;
 &lt;br /&gt;
    ob.showArgs(&amp;quot;Here are some integers&amp;quot;,  &lt;br /&gt;
                1, 2, 3, 4, 5); &lt;br /&gt;
 &lt;br /&gt;
    ob.showArgs(&amp;quot;Here are two more&amp;quot;,  &lt;br /&gt;
                17, 20); &lt;br /&gt;
 &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use two out parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
// Use two out parameters. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
class Num { &lt;br /&gt;
  /* Determine if x and v have a common denominator. &lt;br /&gt;
     If so, return least and greatest common denominators in  &lt;br /&gt;
     the out parameters. */ &lt;br /&gt;
  public bool isComDenom(int x, int y, &lt;br /&gt;
                         out int least, out int greatest) { &lt;br /&gt;
    int i; &lt;br /&gt;
    int max = x &amp;lt; y ? x : y; &lt;br /&gt;
    bool first = true; &lt;br /&gt;
 &lt;br /&gt;
    least = 1; &lt;br /&gt;
    greatest = 1;  &lt;br /&gt;
 &lt;br /&gt;
    // find least and treatest common denominators &lt;br /&gt;
    for(i=2; i &amp;lt;= max/2 + 1; i++) { &lt;br /&gt;
      if( ((y%i)==0) &amp;amp; ((x%i)==0) ) { &lt;br /&gt;
        if(first) { &lt;br /&gt;
          least = i; &lt;br /&gt;
          first = false; &lt;br /&gt;
        } &lt;br /&gt;
        greatest = i; &lt;br /&gt;
      } &lt;br /&gt;
    } &lt;br /&gt;
 &lt;br /&gt;
    if(least != 1) return true; &lt;br /&gt;
    else return false; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
  &lt;br /&gt;
public class DemoOut { &lt;br /&gt;
  public static void Main() {   &lt;br /&gt;
    Num ob = new Num(); &lt;br /&gt;
    int lcd, gcd; &lt;br /&gt;
 &lt;br /&gt;
    if(ob.isComDenom(231, 105, out lcd, out gcd)) { &lt;br /&gt;
      Console.WriteLine(&amp;quot;Lcd of 231 and 105 is &amp;quot; + lcd); &lt;br /&gt;
      Console.WriteLine(&amp;quot;Gcd of 231 and 105 is &amp;quot; + gcd); &lt;br /&gt;
    } &lt;br /&gt;
    else &lt;br /&gt;
      Console.WriteLine(&amp;quot;No common denominator for 35 and 49.&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    if(ob.isComDenom(35, 51, out lcd, out gcd)) { &lt;br /&gt;
      Console.WriteLine(&amp;quot;Lcd of 35 and 51 &amp;quot; + lcd); &lt;br /&gt;
      Console.WriteLine(&amp;quot;Gcd of 35 and 51 is &amp;quot; + gcd); &lt;br /&gt;
    } &lt;br /&gt;
    else &lt;br /&gt;
      Console.WriteLine(&amp;quot;No common denominator for 35 and 51.&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>