C#学习笔记_3.12
1、参数传入函数的默认行为是按值传递
View Code
1 //默认情况下参数会按值传递
2 static int Add(int x, int y)
3 {
4 int ans = x + y;
5
6 //由于我们修改的是原始数据的副本,调用者不会看到这些改变
7 x = 1000;
8 y = 8888;
9 return ans;
10 }
11
12 static void Main(string[] args)
13 {
14 Console.WriteLine("*****Fun with Methods*****\n");
15
16 // 按值传入两个变量
17 int x = 9, y = 10;
18 Console.WriteLine("Before call: x:{0},y:{1}", x, y);
19 Console.WriteLine("Answer is: {0}", Add(x, y));
20 Console.WriteLine("After call: x:{0},y:{1}", x, y);
21 Console.ReadLine();
22 }
2、定义为带有输出参数(通过关键字out)的方法有义务在退出这个方法之前,给参数赋一个恰当的值
输出参数不需要在它们被传递给方法之前初始化,因为方法在退出之前必须为输出参数赋值;
引用参数必须在它们被传递给方法之前初始化,因为是在传递一个对已存在变量的引用。
3、params 关键字可以把可变数量的参数(相同类型)作为单个逻辑参数传递给方法。
View Code
1 static double CalculateAverage(params double[] values)
2 {
3 Console.WriteLine("you sent me {0} doubles.", values.Length);
4
5 double sum = 0;
6 if (values.Length == 0)
7 {
8 return sum;
9 }
10 for (int i =0;i<values.Length;i++)
11 sum += values[i];
12 return (sum / values.Length);
13 }
14 static void Main(string[] args)
15 {
16 //传递一个以逗号分隔的double型数的列表
17 double average;
18 average = CalculateAverage(4.0, 3.2, 5.7, 64.22, 87.2);
19 Console.WriteLine("Average of data is:{0}", average);
20 //或传递一个double型的数组
21 double[] data = { 4.0, 3.2, 5.7 };
22 average = CalculateAverage(data);
23 Console.WriteLine("Average of data is:{0}", average);
24 }
4、定义可选参数:分配给可选参数的值必须在编译时确定,而不能在运行时确定,可选参数必须放在方法签名的最后。
5、命名参数允许在调用方法时以任意顺序指定参数的值,因此,可以使用冒号操作符通过名称来指定参数,而不必按位置传递参数。单数在调用方法的时候如果使用了位置参数,那么它们必须列在所有命名参数之前。
6、成员重载:当我们定义一组名字相同的成员时,如果它们的参数数量(或类型)不同,这样的成员就叫做被重载。
7、var关键字可定义隐式类型本地变量,也可以用来定义隐式类型本地数组。
var a = new[] {1, 10, 100, 1000}; //a实际上是int[]
8、定义object数组
View Code
1 static void Main(string[] args)
2 {
3 Console.WriteLine("Array of objects.");
4
5 //对象数组可以是任何东西
6 object[] myObjects = new object[4];
7 myObjects[0] = 10;
8 myObjects[1] = false;
9 myObjects[2] = new DateTime(2012,11,11);
10 myObjects[3] = "form & void";
11
12 foreach (object obj in myObjects)
13 {
14 Console.WriteLine("Type:{0}, Value:{1}", obj.GetType(), obj);
15 }
16 Console.ReadLine();
17 }
9、System.Array基类
Clear() 将数组中的一系列元素设置为空值;
CopyTo() 将源数组中的元素复制到目标数组中
Length 这个属性返回数组中的项的个数
Rank 这个属性返回当前数组维数
Reverse() 这个静态方法反转一维数组的内容
Sort() 这个静态方法为内建类型的一维数组排序