很多时候我们不可以把一些字段暴露出来允许别人调用和修改,为了隐藏这些字段又便于加限制的使用,在面向对象编程中一般采用写get set函数的办法,比如:

        //字段_age, "_"表示private
private int _age; //获取字段值的方法,需要返回这个int类型字段
public int GetAge()
{
return this._age;
} //设置字段值的方法,不需要返回值,定义一个int类型的value
public void SetAge(int value)
{
if (value >= 0 && value <= 120)//可以加条件来限制字段的范围
{
this._age = value;
}
else
{
throw new Exception ("Age value has error.");
}
}

学生的年龄限制在0-120,则可以避免20岁输入成200岁这种错误。

C#语言单独引入了属性这种概念,用来对字段加以限制,属性是一种语法糖。

        //字段_age, "_"表示private
private int _age; public int Age
{
//获取字段值的方法
get
{
return this._age;
} //设置字段值的方法,不需要返回值
set
{
if (value >= 0 && value <= 120)//规定好value是上下文关键字(蓝色)
{
this._age = value;
}
else
{
throw new Exception("Age value has error.");
}
}
}

只读方法:(不允许往里写,只允许读取的方法。另外只写方法是没有意义的,因此不举例只写方法)

        //字段_age, "_"表示private
private int _age; public int Age
{
//获取字段值的方法
get
{
return this._age;
}
}

属性快捷键

propfull 然后按两下tab会出现

        private int myVar;

        public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}

最简单:(这种属性没有任何保护,与一个公有的字段完全一样,很容易被改变值,带有这种属性的类一般是传输数据用的)

        public int Age{get;set;}

索引器:Indexer

基本语法:

修饰符 类型名 this [参数列表] //this表示他是个索引器
{
get{
}
set{
}
}

举个例子:

public string s;
//可容纳100个整数的整数集
private string[] arr = new string[10];
//声明索引器
public string this[int index]//这里定义一个index
{
get
{ //检查索引范围
if (index < 0 || index >= 10)
{
return null;
}
else
{
return arr[index];
}
}
set
{
if (!(index < 0 || index >= 100))
{
arr[index] = value;
}
}
}

最新文章

  1. SQL Server群集知识介绍
  2. Web APi之控制器创建过程及原理解析(八)
  3. [MySQL Reference Manual] 10 全球化
  4. Rect 和 Bounds
  5. linux下VMware安装出现的问题解决
  6. 什么是Activity
  7. 关于wxwidgets图形界面的关闭窗口的按钮无效的解决办法
  8. HTML5自学笔记[ 3 ]表单验证反馈
  9. 关于UIMenuController的使用 弹出菜单 UIMenuItem
  10. HDU5781--ATM Mechine(概率dp)
  11. DataGridView 绑定数据后修改列类型
  12. NSThread 、NSRunLoop 和 Dispatch Queue
  13. Handsontable通用方法
  14. html5的在ie6,7,8兼容
  15. Mysql存在则更新,没有则新增
  16. python之控制流
  17. Chrome opacity非1时border-radius圆角边框剪裁问题
  18. txt文本处理---行未添加逗号
  19. sql语句循环截取字符串
  20. js核心对象

热门文章

  1. 【虚拟机】:&quot;该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。&quot;
  2. 本地MongoDB服务开启与连接本地以及远程服务器MongoDB服务
  3. ECUST_Algorithm_2019_2
  4. JavaSE---多线程---概述
  5. leetcode-165周赛-1278-分割回文串③
  6. shell脚本编程运算
  7. POJ 2443 Set Operation (按位压缩)
  8. Linux运维学习网站收藏
  9. Network基础(四):MAC地址表及邻居信息查看、配置接口速率及双工模式、配置交换机管理IP
  10. 工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本