面向对象的C#语言——属性、索引
使用属性、索引的示例:
- 使用属性button1.Text
button1.Text = “说您好”;
含义相当于button1.setText(“说您好”);
String s = button1.Text;
含义相当于s = button1.getText(); - 使用属性String s = “abcde”;
求出其长度:s.Length;
含以上相当于s.GetLength(); - 使用索引String s = “abcde”;
求出第0个字符:s[0]
含义相当于s.Get(0);
注:属性相当于对字段的访问;索引对内容下标的访问。
一、属性
1.属性(property)的书写
private string _name;
public string Name
{
get//返回一个值
{
return _name;
}
set//设定一个值
{
_name = value;//value表示传进的参数
}
}
注:在C#3以上版本可以写为
Public String Name { set; get; }
//其自动生成set,get方法
2.对属性进行访问
person p = new person();
p.Name = "黎明";
——①
Console.WriteLine(p.Name);
——②
编译器产生的方法为:
void set _ Name(string value);
//相当于①
string get _ Name();
//相当于②
3.属性与字段的比较
由于属性实际上是方法,所以属性可以具有优点。
- 可以只读或只写,只有get或set
- 可以进行有效的检查:if…
- 可以是计算得到的数据:
public string Info
{
get {return"Name:"+Name",Age:"+Age};
}
- 可以定义抽象属性
二、索引
1.索引器(Indexer)
修饰符 类型名 this[参数列表]//this表示索引器
{
set
{
}
get
{
}
}
索引器示例:
using System;
class IndexerRecord
{
private string [] data = new string[6];
private string[] keys = { "a", "b", "c", "d", "e" };
//设置索引器
public string this[int idx] //根据下标(索引)找到信息
{
set
{
if (idx >= 0 && idx < data.Length)
data[idx] = value;
}
get//get方法必须具有返回值
{
if (idx >= 0 && idx < data.Length)
return data[idx];
return null;
}
}
public string this[string key] //根据字符串查找信息
{
set
{
int idx = FindKey(key);
this[idx] = value;
}
get//get方法必须具有返回值
{
return ......;
}
}
2.使用索引
对象名[参数]
编译器自动产生两个方法,以供调用:
T get_Item(p);
void set_Item(P,T value);
3.属性与索引的比较
属性 | 索引器 |
---|---|
通过名称标识 | 通过参数列表进行标识 |
通过简单名称来访问 | 通过[ ]运算符来访问 |
可以用static修饰 | 不能用static修饰 |
属性的get访问器没有参数 | 索引的get访问器具有与索引相同的参数列表 |
属性的set访问器包含隐式Value参数 | 除了Value参数外,索引的set访问器还有与索引相同的参数列表 |
注:关于属性与索引这部分小编我也是听的似懂非懂,云里雾里。希望在以后的学习中能够逐渐完善。
@梦幻泡沫