C# get 、set、索引器
get 与 set
C#类的属性有公有属性(public)和私有属性(private)。如果直接将一个属性声明为public,则该类的任意实例可以随意获取或修改该属性的值,很不安全。.NET Framework中,我们使用get关键字来获取一个公有属性的值,而使用set来设置一个公有属性的值。而在get或set中,可以编写代码来控制对属性值的获取和修改。
public class SplaybowClass
{
//.net2.0及1.1版本设置属性的方式
private String name; //私有属性
public String Name
{ //对应name这个私有属性的公有属性
get {
return this.name;
}
set {
this.name = value;
}
}
//.net3.5之后,效果与上面一样
public int Port{get; set;}
}
注意:
get和set可以根据实际需要而出现其中一个,不一定两个都要出现。
例子中公有属性的Name和私有属性的name就一个大小写的差别,这只是一个书写习惯。也有人喜欢在私有属性后加一个下划线(_)。
索引器的定义
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。声明与属性有些类似。索引器定义的时候不带有名称,但带有 this 关键字,它指向对象实例。语法如下:
element-type this[type index]
{
// get 访问器
get
{
// 返回 index 指定的值
}
// set 访问器
set
{
// 设置 index 指定的值
}
}
其中: element-type 指元素类型, type 指索引的类型,可以是string、int等。
class DayCollection
{
string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
private int GetDay(string testDay)
{
; j < days.Length; j++)
{
if (days[j] == testDay)
{
return j;
}
}
}
public int this[string day] //索引器的定义,元素类型为int,索引类型为string
{
get //只有get属性,没有设置set属性
{
return (GetDay(day));
}
}
}
索引器的用途
索引器的行为的声明在某种程度上类似于属性(property)。就像属性,可使用 get 和 set 访问器来定义索引器。但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。换句话说,它把实例数据分为更小的部分,并索引每个部分,获取或设置每个部分。可以使用数组访问运算符([ ])来访问该类或结构的实例。
using System;
using System.Collections;
public class IndexerClass
{
];
public string this[int index] //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
{
//实现索引器的get方法
get
{
)
{
return name[index];
}
return null;
}
//实现索引器的set方法
set
{
)
{
name[index] = value;
}
}
}
}
public class Test
{
static void Main()
{
//索引器的使用
IndexerClass Indexer = new IndexerClass();
Indexer[] = "Tom Brown"; //"="号右边对索引器赋值,其实就是调用其set方法
Indexer[] = "Jim Green";
Console.WriteLine(Indexer[]); //输出索引器的值,其实就是调用其get方法
Console.WriteLine(Indexer[]);
}
}
C# get 、set、索引器的更多相关文章
- 【.net 深呼吸】细说CodeDom(7):索引器
在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参 ...
- C# 索引器,实现IEnumerable接口的GetEnumerator()方法
当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [ ...
- C#基础回顾(三)—索引器、委托、反射
一.前言 ------人生路 ...
- C#索引器
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...
- C#之索引器
实际中不使用这个东西,只做了解 using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
- 《精通C#》索引器与重载操作符(11.1-11.2)
1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表 ...
- 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
不是.可以用任意类型. 索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. 1.索引器的定义 C#中的类成员可以是任意类型,包括数组和集合.当一个类包含了 ...
- C# 索引器使用总结
1.索引器(Indexer): 索引器允许类或者结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于他们的访问采用参数. 最简单的索引器的使用 /// <summary> ...
- C# 类中索引器的使用二
索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便.直观的被引用.索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用.定义 ...
随机推荐
- python与mongodb的交互 增删改差
首先引入包: pip install pymongo需要用到如下对象: MongoClient对象:用于与MongoDB服务器建立连接 client=MongoClient('主机ip',端口) Da ...
- css3中的动画 @keyframes animation
动画的运用比较重要.接下来我希望针对我自己学习遇到的问题,再总结一下这个属性的使用方法. 创建一个动画: @keyframes 动画名 {样式} 引用自己创建的动画: animation:动画名 时 ...
- python实现排序算法 时间复杂度、稳定性分析 冒泡排序、选择排序、插入排序、希尔排序
说到排序算法,就不得不提时间复杂度和稳定性! 其实一直对稳定性不是很理解,今天研究python实现排序算法的时候突然有了新的体会,一定要记录下来 稳定性: 稳定性指的是 当排序碰到两个相等数的时候,他 ...
- python/进程线程的总结
python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...
- 文本编辑器(KindEditord)
1.下载 官网下载:http://kindeditor.net/down.php 本地下载:http://files.cnblogs.com/files/wupeiqi/kindeditor_a5.z ...
- Png 图像缩放保持 Alpha 通道
procedure TForm1.Button1Click(Sender: TObject); //uses Winapi.GDIPOBJ, Winapi.GDIPAPI, Winapi.GDIPUT ...
- github git 在GitHub上创建项目并将本地项目push到网站上
众所周知,git是与svn类似的版本控制系统,git的去中心化.分布式等的优点,在不久将来用户量大有可能超过svn, 常见的代码托管网站有GitHub,coding.net, gitee.com 码云 ...
- javascript实现有限状态机
1.状态机描述 简单说,有限状态机是一种模型,模型都用来模拟事物,能够被有限状态机这种模型模拟的事物,一般都有以下特点: 1)可以用状态来描述事物,并且任一时刻,事物总是处于一种状态: 2)事物拥有的 ...
- iOS masonry 不规则tagView布局 并自适应高度
在搜索页面经常会有不规则的tag出现,这种tagView要有点击事件,单个tagView可以设置文字颜色,宽度不固定根据内容自适应,高度固定,数量不固定.总高度就不固定.最近对于masonry的使用又 ...
- c#之监控文件结构
如果需要知道修改文件或目录的时间,可以通过FileSystemWatcher类,这个类提供了一下应用程序可以捕获的事件,应用程序可以对事件作出响应. 使用FileSystemWatcher非常简单,首 ...