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