封装是指将类的内部数据隐藏起来不让对象实例直接对其操作,C#中提供了属性机制来对类内部的状态进行操作。

在C#中封装可以通过public、private、protected和internal等关键字来体现。

为什么要对类的内部进行封装呢?

例:

public class Person

{

public string name;

public int     age;

}

如果我实例化上面这个类

Person p=new Person()

那么我给age(年龄)赋值为负数,这显然不符合业务逻辑,人的年龄可能为负数吗?

p.age="-1"

使用封装后

public class Person

{

private string name;

   public string Name

  {

    get{return name;}

set{name=value;}

  }

private int     age;

   public string Age

  {

    get{return age;}

set{

if(value>0)

      {

        age=value;  //这里对年龄进行控制,年龄必须要大于0才能赋值.那么年龄为-1就不能赋值

      }

      else

      {

        throw(new ArgumentException("error", value,"年龄不能为负数"));//这里会抛出异常

      }

     }

  }

}

封装后对象实例只能对属性进行操作,属性中可以写下自己的逻辑来控制。

最新文章

  1. js小程序写法优化
  2. java中的static使用--静态变量、静态方法
  3. mina2线程详解
  4. 2 DelayInterval延时间隔类——Live555源码阅读(一)基本组件类
  5. loj 1221(spfa判正环)
  6. .NET: C#: Datetime
  7. WPF:xmal 静动态资源
  8. lseek()函数
  9. 【Qt】命令行编译Qt程序(nmake)【转】
  10. 创建MySQL从库
  11. 【转载】Apache Kafka:下一代分布式消息系统
  12. 补充:sql server 中的相关查询、case函数
  13. 【C#基础】实现URL Unicode编码,编码、解码相关整理
  14. Android 6.0 闪光灯的使用
  15. orcle 索引的使用
  16. jQuery经典案例
  17. centos 6.8 设置svn钩子同步至web目录
  18. 设置dataGridView单元格颜色、字体、ToolTip、字体颜色
  19. BZOJ 1022: [SHOI2008]小约翰的游戏John (Anti-nim)
  20. 给 MSYS2 添加中科大的源

热门文章

  1. Process 'command 'D:\AndroidSDK\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2
  2. Mall电商项目总结(一)——项目概述
  3. Mapper3中Example的高级使用方法
  4. 在ubuntu16.04上编译android源码【转】
  5. poj2773 —— 二分 + 容斥原理 + 唯一分解定理
  6. ffmpeg 的一些学习网站
  7. C#入门---2、C#装备知识(C#创建桌面程序的时候创建的是什么应用程序)
  8. BZOJ-3439:Kpm的MC密码(Trie+DFS序+主席树)
  9. linux下配置jdk+tomcat
  10. hihoCoder2月29日(字符串模拟)