set,get方法(属性,索引器)
很多时候我们不可以把一些字段暴露出来允许别人调用和修改,为了隐藏这些字段又便于加限制的使用,在面向对象编程中一般采用写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;
}
}
}
set,get方法(属性,索引器)的更多相关文章
- CLR via C#(11)-无参属性、有参数属性(索引器)
一. 无参属性 1. 定义属性 无参属性就是我们最常见的属性方式,在赋值时可以加入一定的逻辑判断.属性的定义其实不复杂,先看个直观的例子: 说明: 属性要定义名称和类型,且类型不能是void. 属性是 ...
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
- (转)c# 属性与索引器
属性是一种成员,它提供灵活的机制来读取.写入或计算私有字段的值. 属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法. 这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性. 一个简单 ...
- C#索引器-有参属性
总结 只要类中有类似于属性的元素就应创建索引器,此属性代表的不是一个值,而是值的集合,其中每一个项由一组参数标识. 这些参数可以唯一标识应引用的集合中的项. 索引器延伸了属性的概念,索引器中的一个成员 ...
- 【Unity|C#】基础篇(7)——属性(Property)/ 索引器(Indexer)
[学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...
- C# 类中索引器的使用二
索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便.直观的被引用.索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用.定义 ...
- 索引器 C#
概述 索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的访问器采用参数. 在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 访问器方法(作为分 ...
- Asp.Net中索引器的用法
索引器定义类似于属性,但其功能与属性并不相同.索引器提供一种特殊的方法编写get和set访问器.属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员. 一.索引器特性 1.g ...
- C#学习笔记(十六):索引器和重载运算符
二维数组如何映射到一维数组 重载运算符 1.算术运算符 2.关系运算符, < 和 > 成对重载 using System; using System.Collections.Generic ...
- C#入门--索引器
C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问 ...
随机推荐
- Linux中的系统服务_01
Linux中的系统服务_01 1.linux中所有的内容都是以文件的形式存在,所以其服务也是以文件的形式存在/etc/init.d目中, 2.存在改/etc/init.d/目录里的文件,都可以通过命令 ...
- 【串线篇】spring泛型依赖注入原理
spring泛型依赖注入原理 不管三七二十一 servlet :加注解@servlet service:加注解@service dao:加注解@Repository 这相当于在容器中注册这些个类
- python_suit
全局变量 Json:双引号 Suite :ddt中不能用 suit.add(test),应该用 suit.add(loader)
- diff算法(核心)
ps:大致转载知乎文章 vue和react的虚拟dom都采用类似的diff算法,核心大概可以归为两点 1,两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构: 2,同一层级的一组节点, ...
- 51单片机PC程序计数器
PC是一个16位的计数器.用于存放和指示下一条要执行的指令的地址.寻址范围达64KB.PC有自动加1功能,以实现程序的顺序执行.PC没有地址,是不可寻址的,无法用指令对它进行读写.但在执行转移.调用. ...
- 关于Linux_系统资源监控_dmesg_free_uptime_uname
(系统资源查看命令-dmesg[查看系统内核资源信息])->判断服务器的硬件状态 Comment:dmesg | grep CPU,指定查看cpu资源信息 (系统资源查看命令-free[查看内存 ...
- Reverse array
数组颠倒算法 #include <iostream> #include <iterator> using namespace std; void reverse(int* A, ...
- 建立一个更高级别的查询 API:正确使用Django ORM 的方式
https://www.oschina.net/translate/higher-level-query-api-django-orm
- (Java多线程系列七)Java内存模型和线程的三大特性
Java内存模型和线程的三大特性 多线程有三大特性:原子性.可见性.有序性 1.Java内存模型 Java内存模型(Java Memory Model ,JMM),决定一个线程对共享变量的写入时,能对 ...
- SecureCRT key登录linux ssh设置
一.首先用secureCrt创建密钥 1.使用SecureCRT创建私钥和公钥. SecureCRT quick Connect-> Authentiation -> Public Key ...