面向对象的C#语言——属性、索引

面向对象的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访问器还有与索引相同的参数列表

注:关于属性与索引这部分小编我也是听的似懂非懂,云里雾里。希望在以后的学习中能够逐渐完善。

@梦幻泡沫

你可能感兴趣的:(面向对象的C#语言——属性、索引)