黑马程序员技术交流社区

标题: [打印本页]

作者: 马毅    时间: 2012-12-21 00:37
标题:
本帖最后由 Mayi 于 2012-12-21 00:39 编辑

     类定义了类的每个实例可以包含些什么,而把类中的数据以及函数等叫做类的成员,还可以有类中类的存在,
一:数据成员
     数据成员是指类中的字段、常量、事件等。
     类中的变量叫做字段,例如:
  1.     public class Person
  2.     {
  3.         public string name;
  4.         public bool sex;
  5.         public int age;
  6.     }
复制代码
在以上代码中,name、sex、age 就叫做Person类的字段,可以有以下代码给其赋值:
  1.             Person ps = new Person();
  2.             ps.name = "张三";
  3.             ps.sex = true;
  4.             ps.age = 20;
复制代码
可以用new关键字创建类的一个实例,如上述中的ps,然后通过“.”访问ps中的字段——name、sex、age等,如若对Person类稍作修改,给其加一个方法,如:
  1.     public class Person
  2.     {
  3.         public string name;
  4.         public bool sex;
  5.         public int age;
  6.         public void ShowMsg()
  7.         {
  8.             Console.WriteLine(" 姓名:{0}\n 性别:{1}\n 年龄:{2}",name,sex,age);
  9.         }
  10.     }
复制代码
则可以这样:
  1.             Person ps = new Person();
  2.             ps.name = "张三";
  3.             ps.sex = true;
  4.             ps.age = 20;
  5.             ps.ShowMsg();
复制代码
此处须注意,在new类的对象时,会对其数据成员做初始化,把值类型初始化为0,而把引用类型初始化为null,具体可以注释掉上述代码中的name(string为引用类型)以及age(int为值类型)做测试。 (关于这点可以研究下构造函数)
     函数成员是对数据类型操作从而达到某种需求的,方法、属性、构造函数、析构函数等都是函数成员,运算符和索引器也是函数成员。例如上例中的ShowMsg()就是一个返回值为void,不带参数的函数成员,调用的时候用了“实例名.成员名”这种形式,以下代码定义一个带一个string类型参数,返回值为其长度的函数:
  1.         public int Length(string str)
  2.         {
  3.             int Len = str.Length;
  4.             return Len;
  5.         }
复制代码
所以我们可以由其获取一个字符串的长度,例如做如下调用:
  1. 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