属性与所引器
2016-04-21 22:57
239 查看
转自:http://www.hubwiz.com/
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)
{
for (int j = 0; 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
{
private string[] name = new string[2];
public string this[int index] //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
{
//实现索引器的get方法
get
{
if (index < 2)
{
return name[index];
}
return null;
}
//实现索引器的set方法
set
{
if (index < 2)
{
name[index] = value;
}
}
}
}
public class Test
{
static void Main()
{
//索引器的使用
IndexerClass Indexer = new IndexerClass();
Indexer[0] = "Tom Brown"; //"="号右边对索引器赋值,其实就是调用其set方法
Indexer[1] = "Jim Green";
Console.WriteLine(Indexer[0]); //输出索引器的值,其实就是调用其get方法
Console.WriteLine(Indexer[1]);
}
}
相关文章推荐
- Ruby 之 class 中的 private、 protected、public
- Ruby定义私有方法(private)的两种办法
- C# partial关键字说明
- asp下查询xml的实现代码
- SQL语句的各个关键字的解析过程详细总结
- C# 的关键字详细介绍
- C# 参考之访问关键字:base、this
- .net(c#)中的new关键字详细介绍
- C#基础语法:Base关键字学习笔记
- 深入分析C++中几个最不常用的关键字
- 详谈signed 关键字
- 探讨register关键字在c语言和c++中的差异
- C++的static关键字及变量存储位置总结
- C 语言restrict 关键字的使用浅谈
- 实例详解C/C++中extern关键字
- php类中private属性继承问题分析
- php关键字仅替换一次的实现函数
- PHP中return 和 exit 、break和contiue 区别与用法
- asp.net中的check与uncheck关键字用法解析
- Ruby中的public、private、protected区别小结