正在阅读:由C++转向C#需要注意的变化(二)由C++转向C#需要注意的变化(二)

2004-11-17 09:59 出处:CSDN 作者:AustinLei 责任编辑:linjixiong


  //一个可以接受Point作为参数的方法
  privatevoidSomeMethod(Pointp)
  {
  Console.WriteLine("Pointat{0}x{1}",
  p.x,p.y);
  }
  }

  属性

  大多数的C++编程人员都希望使成员变量的属性为private,这种隐藏数据的想法促进了数据封装概念的出现,使我们能够在不改变用户依赖的接口的情况下而改变类的实现。通常情况下,我们只希望客户获取或设置这些成员变量的值。因此,C++编程人员开发出了用来存取private成员变量的存取器。

  在C#中,属性是类的第一级成员。对于客户而言,属性看起来象一个成员变量。对于类的实现者而言,它看起来更象是方法。这种设计很巧妙,既可以实现数据的隐藏和封装,又可以使客户很方便地访问成员变量。

  我们可以在Employee类中添加一个Age属性,使客户可以很方便地获取和设置员工年龄这个类的成员:


  publicintAge
  {
  get
  {
  returnage;
  }
  set
  {
  age=value;
  }
  }

  关健字value可以被属性隐性地使用。如果编写如下的代码:


  Fred.Age=17;

  编译器将会把值17传递给value。

  通过只采用Get而不采用Set,我们可以为YearsServed创建一个只读的属性:


  publicintYearsServed
  {
  get
  {
  returnyearsServed;
  }
  }Accessors的使用
  privatevoidRun()
  {
  EmployeeFred=newEmployee(25,101,7);
  Console.WriteLine("Fred'sage:{0}",
  Fred.Age);
  Fred.Age=55;
  Console.WriteLine("Fred'sage:{0}",
  Fred.Age);




察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品