本帖最后由 Mayi 于 2012-12-21 00:39 编辑
类定义了类的每个实例可以包含些什么,而把类中的数据以及函数等叫做类的成员,还可以有类中类的存在,
一:数据成员
数据成员是指类中的字段、常量、事件等。
类中的变量叫做字段,例如:- public class Person
- {
- public string name;
- public bool sex;
- public int age;
- }
复制代码 在以上代码中,name、sex、age 就叫做Person类的字段,可以有以下代码给其赋值:- Person ps = new Person();
- ps.name = "张三";
- ps.sex = true;
- ps.age = 20;
复制代码 可以用new关键字创建类的一个实例,如上述中的ps,然后通过“.”访问ps中的字段——name、sex、age等,如若对Person类稍作修改,给其加一个方法,如:- public class Person
- {
- public string name;
- public bool sex;
- public int age;
- public void ShowMsg()
- {
- Console.WriteLine(" 姓名:{0}\n 性别:{1}\n 年龄:{2}",name,sex,age);
- }
- }
复制代码 则可以这样:- Person ps = new Person();
- ps.name = "张三";
- ps.sex = true;
- ps.age = 20;
- ps.ShowMsg();
复制代码 此处须注意,在new类的对象时,会对其数据成员做初始化,把值类型初始化为0,而把引用类型初始化为null,具体可以注释掉上述代码中的name(string为引用类型)以及age(int为值类型)做测试。 (关于这点可以研究下构造函数)
函数成员是对数据类型操作从而达到某种需求的,方法、属性、构造函数、析构函数等都是函数成员,运算符和索引器也是函数成员。例如上例中的ShowMsg()就是一个返回值为void,不带参数的函数成员,调用的时候用了“实例名.成员名”这种形式,以下代码定义一个带一个string类型参数,返回值为其长度的函数:- public int Length(string str)
- {
- int Len = str.Length;
- return Len;
- }
复制代码 所以我们可以由其获取一个字符串的长度,例如做如下调用:- int ll = ps.Length(ps.name);
复制代码 从而得到name的长度,并把其赋值给int类型的 ll。
关于参数的传递,有点要注意,就是在传递参数的时候都是值传递,不管是值类型还是引用类型,在某些时候我们可能需要以引用的方式传递参数,通过ref和out可以实现,
ref会把参数的索引传递给函数,所以对该值所做的任何改变都会保留。使用的时候要在定义函数的时候在参数前面加上ref关键字,调用亦是。无论是参数的值传递还是ref传递,都要求对变量初始化。
由于函数只能有一个返回值,而或许我们希望能返回多个值,out可以帮助我们实现,和ref关键字一样,在定义和调用的时候必须加上out关键字,和ref不同的是out参数可以不必初始化,但在方法内部使用之前必须给其赋值,而在方法体结束之前必须对所有的out参数都有赋值操作,不然会报错,这点须特别注意。 |