对于初次接触面向对象或者从面向过程转到面向对象的时候,需要很长一段时间去熟悉。

针对面向对象思想,我们来介绍一下类、属性、方法、构造函数、析构函数、params、命名空间等常用的概念。

可能很多人搞不清什么是类,我们可以把很多具有相同特性的物体统称为一类,比如老师和同学虽然职务不同,但是都有符合人的特征,所以老师和同学都属于人这个类。

定义一个类的好处是可以规定相同一类东西要具有的字段和属性。

例如,人类具有姓名,年龄,体态,性别等相同的属性

public class Person
    {
       public string name;
       public int age;
       public char sex;
       public void sayhello()
       {
           Console.WriteLine("你好");
       }
       
    }

上面的代码中,我们定义了一个人类,人类有名字,年龄,性别三个字段和一个打招呼的方法。

但是显然,通过直接对类的字段赋值是不安全的,可能会使不能改变的值意外的改变。那么我们就要用到属性,把不允许直接访问的字段定义为类的私有字段,然后通过封装字段来进行对私有字段的只读,只写,或者读写操作。

 private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }

上面的代码即对name字段进行了封装,封装后得到的Name被称之为类的属性,属性里有get和set两个关键字,get负责把值输出,set负责给私有字段赋值。

get和set的大括号里也可以写一些判断,以保障写入的值为允许的,正常的。

当我们把get删掉时,该属性就变成了只写,当我们删掉set的时候,该属性就变成了只读,当get和set同时存在时,属性为读写

当我们把一个属性变成只读时,相应的我们会遇到一些问题,问题就是无法给这个私有字段赋值,这时候就要用到构造函数来进行赋值。

例如:

 public Person(string name)
       {
           this.name = name;
       }
       

        private string name;

        public string Name
        {
            get { return name; }
            
        }

上面的代码中,name属性被设置为只读,无法对其进行赋值,且name为私有字段,Person便是person类的构造函数,通过传入一个name变量来给name赋值,赋值后,name就不能进行更改,只能进行读取。

析构函数在C#中的应用较少。析构函数即是垃圾回收器在回收当前内存前要执行的方法,语法是在普通的构造函数之前加”~“符号,因为使用较少,再此不再赘述。

Params关键字:

Params关键字可以使一个数组进行分散式的赋值,例如

public static void WriteLine(string format, params object[] arg);

对于命名空间,当我们有两个相同的类但却在不同的项目中的时候,两个类互相不发生关系,若是对两个项目进行对接的话,那么两个类就会发生冲突,这时就需要用命名空间来区分二者。

posted on 2013-01-21 14:44  刘洋.neusoft  阅读(269)  评论(0编辑  收藏  举报