/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /* Example5_7.cs illustrates passing parameters by reference */ // declare the Swapper class class Swapper { // the Swap() method swaps parameters passed by reference public void Swap(ref int x, ref int y) { // display the initial values System.Console.WriteLine("In Swap(): initial x = " + x + ", y = " + y); // swap x and y int temp = x; x = y; y = temp; // display the final values System.Console.WriteLine("In Swap(): final x = " + x + ", y = " + y); } } public class Example5_7 { public static void Main() { // declare x and y (the variables whose values // are to be swapped) int x = 2; int y = 5; // display the initial values System.Console.WriteLine("In Main(): initial x = " + x + ", y = " + y); // create a Swapper object Swapper mySwapper = new Swapper(); // swap the values, passing a reference to the Swap() method mySwapper.Swap(ref x, ref y); // display the final values System.Console.WriteLine("In Main(): final x = " + x + ", y = " + y); } }
Month: February 2011
Parameter demo
/* Learning C# by Jesse Liberty Publisher: O'Reilly ISBN: 0596003765 */ using System; namespace ParamsDemo { public class TesterParamsDemo { public void Run() { int a = 5; int b = 6; int c = 7; Console.WriteLine("Calling with three integers"); DisplayVals(a,b,c); Console.WriteLine(" Calling with four integers"); DisplayVals(5,6,7,8); Console.WriteLine(" calling with an array of four integers"); int [] explicitArray = new int[4] {5,6,7,8}; DisplayVals(explicitArray); } // takes a variable number of integers public void DisplayVals(params int[] intVals) { foreach (int i in intVals) { Console.WriteLine("DisplayVals {0}",i); } } [STAThread] static void Main() { TesterParamsDemo t = new TesterParamsDemo(); t.Run(); } } }
Use regular parameter with a params parameter
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Use regular parameter with a params parameter. using System; class MyClass { public void showArgs(string msg, params int[] nums) { Console.Write(msg + ": "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); } } public class ParamsDemo2 { public static void Main() { MyClass ob = new MyClass(); ob.showArgs("Here are some integers", 1, 2, 3, 4, 5); ob.showArgs("Here are two more", 17, 20); } }
Demonstrate params
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate params.
using System;
class Min {
public int minVal(params int[] nums) {
int m;
if(nums.Length == 0) {
Console.WriteLine(“Error: no arguments.”);
return 0;
}
m = nums[0];
for(int i=1; i < nums.Length; i++)
if(nums[i] < m) m = nums[i];
return m;
}
}
public class ParamsDemo {
public static void Main() {
Min ob = new Min();
int min;
int a = 10, b = 20;
// call with two values
min = ob.minVal(a, b);
Console.WriteLine("Minimum is " + min);
// call with 3 values
min = ob.minVal(a, b, -1);
Console.WriteLine("Minimum is " + min);
// call with 5 values
min = ob.minVal(18, 23, 3, 14, 25);
Console.WriteLine("Minimum is " + min);
// can call with an int array, too
int[] args = { 45, 67, 34, 9, 112, 8 };
min = ob.minVal(args);
Console.WriteLine("Minimum is " + min);
}
}
[/csharp]
Swap two references
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Swap two references. using System; class RefSwap { int a, b; public RefSwap(int i, int j) { a = i; b = j; } public void show() { Console.WriteLine("a: {0}, b: {1}", a, b); } // This method now changes its arguments. public void swap(ref RefSwap ob1, ref RefSwap ob2) { RefSwap t; t = ob1; ob1 = ob2; ob2 = t; } } public class RefSwapDemo { public static void Main() { RefSwap x = new RefSwap(1, 2); RefSwap y = new RefSwap(3, 4); Console.Write("x before call: "); x.show(); Console.Write("y before call: "); y.show(); Console.WriteLine(); // exchange the objects to which x and y refer x.swap(ref x, ref y); Console.Write("x after call: "); x.show(); Console.Write("y after call: "); y.show(); } }
Use two out parameters
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Use two out parameters.
using System;
class Num {
/* Determine if x and v have a common denominator.
If so, return least and greatest common denominators in
the out parameters. */
public bool isComDenom(int x, int y,
out int least, out int greatest) {
int i;
int max = x < y ? x : y;
bool first = true;
least = 1;
greatest = 1;
// find least and treatest common denominators
for(i=2; i <= max/2 + 1; i++) {
if( ((y%i)==0) & ((x%i)==0) ) {
if(first) {
least = i;
first = false;
}
greatest = i;
}
}
if(least != 1) return true;
else return false;
}
}
public class DemoOut {
public static void Main() {
Num ob = new Num();
int lcd, gcd;
if(ob.isComDenom(231, 105, out lcd, out gcd)) {
Console.WriteLine("Lcd of 231 and 105 is " + lcd);
Console.WriteLine("Gcd of 231 and 105 is " + gcd);
}
else
Console.WriteLine("No common denominator for 35 and 49.");
if(ob.isComDenom(35, 51, out lcd, out gcd)) {
Console.WriteLine("Lcd of 35 and 51 " + lcd);
Console.WriteLine("Gcd of 35 and 51 is " + gcd);
}
else
Console.WriteLine("No common denominator for 35 and 51.");
}
}
[/csharp]
Use out
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Use out. using System; class Decompose { /* Decompose a floating-point value into its integer and fractional parts. */ public int parts(double n, out double frac) { int whole; whole = (int) n; frac = n - whole; // pass fractional part back through frac return whole; // return integer portion } } public class UseOut { public static void Main() { Decompose ob = new Decompose(); int i; double f; i = ob.parts(10.125, out f); Console.WriteLine("Integer portion is " + i); Console.WriteLine("Fractional part is " + f); } }