黑马程序员技术交流社区
标题:
类
[打印本页]
作者:
马毅
时间:
2012-12-21 00:37
标题:
类
本帖最后由 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参数都有赋值操作,不然会报错,这点须特别注意。
作者:
许庭洲
时间:
2012-12-21 06:19
值得学习ing!
作者:
王晨
时间:
2012-12-21 10:07
学习了,整理的不错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2