C sharp 学习(三)

  停了几天,今天继续

11.  函数的ref、out参数

  函数的处理工程中会用到两个关键字:ref和out

  ref类似C++中的引用关键字,如:void add(ref i)

  {

    i++;

  }

  int a=1;

  add(ref a);//实现了对a自增的操作

  out实现了内部赋值操作,在运用中,忽略了传进来参数的初始化值,且对参数结束函数前必须重新赋值或初始化

  这也是与ref运用的区别之一,由于是对参数的引用,所以参数必须进行初始化后才能应用

  注:ref应用场景内部对外部的值进行改变,out则是内部为外部变量赋值,out一般用在函数有多个返回值的场所。

  out返回参数的一个应用有int.TryParse,检查转换是否成功

  string s = console.readline();

  int i;

  if(int.Tryparse(s,out i))

  {

    console.writeline("转换成功 {0}",i);

  }

  else

  {

    console.writeline("转换失败");

  }

12.  类

  作为面向对象的一门语言,C sharp同样有类的机制:封装,继承,多态

  要点1:类不占内存,对象才占内存.类是抽象的,对象是具体的.字段是类中定义的相关变量.方法类似于函数,是类可执行的操作.

  要点2:定义字段

  class Person

  {

    public int age;

    public string name;

  }

  Person p1=new Person();//Person()是类默认的构造函数,new Person()则创建了一个新的对象

  p1.age=17;

  p1.name="Tom";//字段的public定义允许外部对字段直接操作,这样极大的破坏了类的封装性,所以平时要养成将类的字段定义为private的习惯,此时用类的属性来解决外部操作的问题

  class Person

  {

   private int age;

   public int Age

    {

     set{this.age=value;}//this可省略

     get{return age;}

    }

    private string name;

   public string Name

    {

     set{this.name=value;}//this可省略

     get{return name;}

    }

   Person p1 = new Person();

   p1.Age=17;

   p1.Name="Tom";//在操作中由字段装换为对属性进行读写,在实际的运行中,写属性时调用set,读属性时调用get,其真正是数据保存在字段中(private int age和private string name),同时在set和get中可以增加对外读写限制的语句,这样就避免了外部对数据的随意操作

  实际运用中还可简写为

  class Person

  {

    public int Age

    {

      set;get;

    }

    public string Name

    {

      set;get;

    }

  }//实际通过反编译可以看出,省略的代码由编译器补上了.

  只用set或者只用get就可以定义只读或者只写属性(只写的不常见)

posted on 2011-09-17 21:26  Rick_w  阅读(725)  评论(0编辑  收藏  举报

导航