C#学习笔记一(变量、属性、方法,构造函数)
C#类中包含三个最基本的元素:
1:变量亦称字段
2:属性,既通过属性为字段赋值或取值
3:方法,完成特定功能,构造函数其实也是一种方法,只不过比较特殊,最近在看21天学通Asp.net,发现书中第三章范例有误,误导了初学者,实在是该死,而且实在看不出是印刷错误来。
接下来举例说明一下:
下面是一个简单的类:
代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 /// <summary>
7 ///Class1 的摘要说明
8 /// </summary>
9 public class Class1
10 {
11 //首先我们定义两个int型变量
12 private int a;
13 private int b;
14 //这是一个空的构造函数
15 public Class1()
16 {
17 }
18 //这是带参数的构造函数,其实已于上面空的构造函数构成了"重载"(原来这就是所谓的重载...)
19 //在这个构造函数中我们为变量a直接赋值
20 public Class1(int in_a) {
21 a = in_a;
22 }
23 //这是属性,用于为变量赋值(set模块)和取走变量的值(get模块)
24 //其中set模块中我们用方法get_b()为b同时赋值
25 public int pa {
26 set {
27 a = value;
28 b = get_b();
29 }
30 get {
31 return a;
32 }
33 }
34 //属性,其中仅有get模块,因为在属性pa中我们已经为变量b赋值
35 public int pb {
36 get { return b; }
37 }
38 //方法,返回变量a+2,用于为b赋值
39 private int get_b() {
40 return a + 2;
41 }
42 }
43
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 /// <summary>
7 ///Class1 的摘要说明
8 /// </summary>
9 public class Class1
10 {
11 //首先我们定义两个int型变量
12 private int a;
13 private int b;
14 //这是一个空的构造函数
15 public Class1()
16 {
17 }
18 //这是带参数的构造函数,其实已于上面空的构造函数构成了"重载"(原来这就是所谓的重载...)
19 //在这个构造函数中我们为变量a直接赋值
20 public Class1(int in_a) {
21 a = in_a;
22 }
23 //这是属性,用于为变量赋值(set模块)和取走变量的值(get模块)
24 //其中set模块中我们用方法get_b()为b同时赋值
25 public int pa {
26 set {
27 a = value;
28 b = get_b();
29 }
30 get {
31 return a;
32 }
33 }
34 //属性,其中仅有get模块,因为在属性pa中我们已经为变量b赋值
35 public int pb {
36 get { return b; }
37 }
38 //方法,返回变量a+2,用于为b赋值
39 private int get_b() {
40 return a + 2;
41 }
42 }
43
接下来我们进行类的实例化,并做简单的应用:
代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7
8 public partial class Default3 : System.Web.UI.Page
9 {
10 protected void Page_Load(object sender, EventArgs e)
11 {
12 //我们用第一种构造函数进行实例化(即空构造函数)
13 Response.Write("用空的构造函数实例化<br>");
14 Class1 test1 = new Class1();
15 test1.pa = 5;
16 Response.Write(test1.pa + "<br>");
17 Response.Write(test1.pb + "<br>");
18 //第二种构造函数进行实例化(即空构造函数)
19 Response.Write("用带参数的构造函数实例化<br>");
20 Class1 test2 = new Class1(5);
21 Response.Write(test2.pa + "<br>");
22 Response.Write(test2.pb + "<br>");
23
24 }
25 }
26
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7
8 public partial class Default3 : System.Web.UI.Page
9 {
10 protected void Page_Load(object sender, EventArgs e)
11 {
12 //我们用第一种构造函数进行实例化(即空构造函数)
13 Response.Write("用空的构造函数实例化<br>");
14 Class1 test1 = new Class1();
15 test1.pa = 5;
16 Response.Write(test1.pa + "<br>");
17 Response.Write(test1.pb + "<br>");
18 //第二种构造函数进行实例化(即空构造函数)
19 Response.Write("用带参数的构造函数实例化<br>");
20 Class1 test2 = new Class1(5);
21 Response.Write(test2.pa + "<br>");
22 Response.Write(test2.pb + "<br>");
23
24 }
25 }
26
结果:
用空的构造函数实例化
5
7
用带参数的构造函数实例化
5
0
5
7
用带参数的构造函数实例化
5
0
心得:
1:变量名不可以与属性名同名。
2:用带参数的构造函数实例化时不会调用相关的属性为变量赋值。
3:21天学通Asp.net中本书上在中个地方讲的含含糊糊,例子也是让人费解。。。让我颇长了见识。。