日期:2014-05-17 浏览次数:20931 次
using System;
class TestApp
{
static void outTest(out int x, out int y)
{//离开这个函数前,必须对x和y赋值,否则会报错。
//y = x;
//上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
x = 1;
y = 2;
}
static void refTest(ref int x, ref int y)
{
x = 1;
y = x;
}
public static void Main()
{
//out test
int a,b;
//out使用前,变量可以不赋值
outTest(out a, out b);
Console.WriteLine("a={0};b={1}",a,b);
int c=11,d=22;
outTest(out c, out d);
Console.WriteLine("c={0};d={1}",c,d);
//ref test
int m,n;
//refTest(ref m, ref n);
//上面这行会出错,ref使用前,变量必须赋值
int o=11,p=22;
refTest(ref o, ref p);
Console.WriteLine("o={0};p={1}",o,p);
}
}namespace 方法参数
{
/// <summary>
/// 参数测试
/// </summary>
class Program
{
static void Main(string[] args)
{
//输出参数
Point p = new Point(10, 12);
int x, y;//输出参数不需要赋初值//与引用类型相似,输出参数也不开辟新的内存区域,
但在调用方法前无需对变量进行初始化。
p.GetPoint(out x, out y);
Console.WriteLine("p({0},{1})", x, y);
//引用参数
Point2 p1 = new Point2(12, 23);
int x1 = 0, y1 = 0;//引用参数一定要赋初值
p1.GetPoint(ref x1, ref y1);
Console.WriteLine("p1({0},{1})", x1, y1);
// 参数数组
int[] a = { 1, 2, 3, 4, 5 };
Array.F(a);
Array.F(10, 20, 30, 60, 50);//F(new int[] {10, 20, 30, 60, 50})
Array.F();
Console.ReadLine();
}
}
/// <summary>
/// 输出参数可返回多个值
/// </summary>
class Point
{
int X, Y;
public Point(int x, int y)
{
this.X = x;
this.Y = y;
}
public void GetPoint(out int x, out int y)//输出参数用于传递方法返回的数据。out修饰符后应跟与形参类型相同的类型申明。在方法返回后,传递的变量被认为经过了初始化。
{
y = this.Y;
x = this.X;
}
}
/// <summary>
/// 引用参数
/// </summary>
class Point2
{
int X, Y;
public Point2(int x, int y)
{
this.X = x;
this.Y = y;
}
public void GetPoint(ref int x, ref int y)
{
y = this.Y;
x = this.X;
}
}
/// <summary>
/// 参数数组
/// </summary>
class Array
{
public static void F(params int[] args)
{
Console.WriteLine("数组长度为:{0}", args.Length);
foreach (int i in args)
{
Console.WriteLine("{0}", i);
}
Console.WriteLine();
}
}
}