2.12 类的创建和使用
C#中,类可以拥有自己的成员和函数,每个类以文件的形式存储于项目文件夹中。从功能上分,类还分为非静态类和静态类。
本节视频:类的创建和使用.wmv
■2.12.1 非静态类
非静态类在被调用时,需要使用new关键字实例化方可访问和使用类的成员。下面通过一个例子来说明非静态类的用法。
启动Visual Studio 2012,创建一个名为“WindowsFormsApplication20160625”的窗体应用程序,在窗体Form1上放入一个button按钮控件。
单击菜单【项目/添加类】,在出现的对话框中重命名类名为UCase.cs,如图2.10所示。
图2.10 添加类
在UCase类模块中,编写一个countCapital函数,用于计算一个字符串中大写字母的个数。UCase类模块代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace WindowsFormsApplication20160625 8 { 9 class UCase 10 { 11 public int countCapital(string source) 12 { 13 int cnt = 0; 14 foreach (char c in source) 15 { 16 if (c >= 'A' && c <= 'Z') 17 { 18 cnt++; 19 } 20 } 21 return cnt; 22 } 23 } 24 }
上述代码中,第11~22行为笔者添加,其余部分为模板自动生成。countCapital函数的实现原理是,用foreach循环遍历source字符串中的每一个字符,如果字符是大写字母,则给cnt自加1,最后函数返回cnt。
下面演示如何在窗体中调用该类中的函数。
回到窗体的设计视图,双击button1,修改其单击事件过程:
1 private void button1_Click(object sender, EventArgs e) 2 { 3 UCase U = new UCase(); 4 MessageBox.Show(U.countCapital("Microsoft Office PPT").ToString()); 5 }
需要特别注意的是,第3行代码声明了一个Ucase变量U,那么U就是UCase类的一个实例,接下来在第4行中,使用U.countCapital就调用了这个类中的函数。
启动调试,单击窗体上的按钮,对话框中出现5,这是因为字符串中含有5个大写字母。
■2.12.2 静态类
静态类与非静态类的区别是,在被调用时,不需要使用new关键字来实例化,使用引用类名称即可。在实际编程应用中,可以利用这一特点,把一些共用的变量或函数放在静态类中。
往项目中添加静态类的方法和一般的类添加步骤是一样的。下面举一个例子,通过单击窗体上的按钮,在按钮上显示已经单击了几次。
在上一小节的窗体应用程序中继续添加一个名为Counter的类,编辑该类中的代码为:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace WindowsFormsApplication20160625 8 { 9 public static class Counter 10 { 11 public static int times = 0; 12 } 13 }
注意代码中第9行class Counter前面加了public static,这说明该类是静态类。该类中定义了一个静态的公有整型变量times。
在窗体的设计视图中继续添加一个名为button2的按钮控件,双击该按钮,编辑其Click 55事件:
1 private void button2_Click(object sender, EventArgs e) 2 { 3 Counter.times++; 4 this.button2.Text = "已经单击:" + Counter.times + "次。"; 5 }
启动调试,每单击一次button2按钮,该按钮的标题文字就显示总共单击它的次数。
要使用静态类中的成员,只需要使用Counter.times即可,无需实例化。