C#学习之路—我们来谈谈“类”(上)
时间:2011-04-30 来源:陈滔
今天刚刚学到类,感觉还不错,觉得内容有点多,就把记下来,也好巩固哈!
一、数据成员
数据成员是包含类的数据—字段、常量和事件的成员,数据成员可以是静态数据,类成员总是实例成员,除非用static进行显示的声明。好像这些都很简单,就不多说了!
二、函数成员
函数成员提供了操作类中的某些功能,包括方法、属性、构造函数和终结器(Finalizer)、运算符以及索引器。
方法:
①、给方法传递参数
参数可以通过引用和值传递给方法。 在参数传递过程中,要注意,引用类型的变量值包含对象的引用,将要复制的正式这个引用,而不是对象本身,所以对底层对象的修改会保留下来,相反,值类型的对象包含的是实际数据,所以传递给方法的是数据本身的副本。例如:int通过值传递给方法,对应方法对int的值做的任何改变都没有改变原int对象的值。但如果把数组或其他引用类型传递给方法,对应的方法就会使用该引用改变这个值,而新值会反射在原始数组对象上。
Code:
参数也可以是可选的。但是必须可选参数提供默认值。可选参数还必须是方法定义的最后一个参数。
⑥、方法的重载 这个很简单,不多说! 方法重载规则:方法的几个版本有不同的前面(即,方法名相同,但参数个数或参数类型不用) C#在方法重载的参数方法有两个限制:a、两个方法不能仅在返回类型上有区别。 b、两个方法不能仅根据参数是声明ref还是out来区分。 好啦,今天就先写到这儿,有点晚了,睡觉去! 下篇文章会写:属性、构造函数、只读字段
1 class Program注意:I的值包吃不变,而在ints中改变的值在原始数组中也改变了! 还有一点要强调:字符串的行为方式有所不同,因为字符串是不可改变的(如果改变字符串的值,就会创建一个姓的字符串),所以字符串无法采用一般引用类型的行为方式。在方法调用中,对字符串做的任何改变都不会营影像到原始字符串。 ②、ref参数 当然也可以迫使值参数通过引用参数传递给方法。这时候,就要使用ref关键字了,在方法输入参数加上ref关键字,这样则该方法对变量所做的人和改变都会影响到原始对象的值。
2 {
3 static void SomeFunction(int[] ints, int i)
4 {
5 ints[0] = 100;
6 i = 100;
7 }
8 public static int Main(string[] args)
9 {
10 int i = 0;
11 int[] ints = { 0, 1, 2, 4, 8 };
12
13 Console.WriteLine("i = " + i);
14 Console.WriteLine("ints[0] = " + ints[0]);
15 Console.WriteLine("Calling SomeFunction...");
16
17 SomeFunction(ints, i);
18 Console.WriteLine("i = " + i);
19 Console.WriteLine("ints[0] = " + ints[0]);
20 return 0;
21
22 // print:
23 // i = 0
24 // ints[0] = 0
25 // Callomh SomeFunction...
26 // i = 0
27 // ints[0] = 100
28
29 }
30 }
1 static void SomeFunction(int[] ints, ref int i)在调用该方法的时候,参数前面也要加上ref关键字 ③、out参数 在方法的输入参数前面加上out时,产地给该方法的变量可以不用初始化。该变量通过引用传递,所以在从被调用的方法中返回时,对应方法对该变量进行的任何改变都会保留下来。在调用该方法的时候,也要加上out关键字。 Code:
2 {
3 ints[0] = 100;
4 i = 100; //这个值的改变,将会影像到原始对象的值。
5 }
1 static void SomeFunction(out int i)④、命名参数 参数一般需要按定义的顺序传递给方法。命名参数允许按任意顺序传递。
2 {
3 i = 100;
4 }
5 public static int Main(string[] args)
6 {
7 int i;
8 SomeFunction(out i);
9 Console.WriteLine(i);
10 return 0;
11 }
1 public static string First(string name, string lastname)⑤、可选参数
2 {
3 return name + "" + lastname;
4 }
5 public static void Main(string[] args)
6 {
7 //下面的调用会放回相同的全名
8 First("SunShine", "SunShine462");
9 First(lastname: "SunShine462", name: "SunShine462");
10
11 }
参数也可以是可选的。但是必须可选参数提供默认值。可选参数还必须是方法定义的最后一个参数。
1 string First(string name, string lastname = "sun")
2 {
3 return name + "" + lastname;
4 //这样在调用的时候,lastname这个参数就是可写可不写的
5 }
⑥、方法的重载 这个很简单,不多说! 方法重载规则:方法的几个版本有不同的前面(即,方法名相同,但参数个数或参数类型不用) C#在方法重载的参数方法有两个限制:a、两个方法不能仅在返回类型上有区别。 b、两个方法不能仅根据参数是声明ref还是out来区分。 好啦,今天就先写到这儿,有点晚了,睡觉去! 下篇文章会写:属性、构造函数、只读字段
相关阅读 更多 +