zoukankan      html  css  js  c++  java
  • C#中索引器与属性的联系和区别

    C#中索引器与属性有什么联系和区别?

    索引器

    具有集合性质的类一般应提供索引器,作用:在对象之外公开集合中的某一项

    索引器:其实就是带参数的属性,在任何可以声明属性的地方都可以声明索引器,语法如下:

    [访问修饰符] 数据类型 this[数据类型 标识符] {  get{}  set{} } eg:private int[] arr=new int[100];     public int this[int i]     {  get{return arr[i];}  set{arr[i]=value;}     }

    1.索引器是属性的一种,它本质上和属性一样是方法。

    2.索引器的类型和集合元素的类型一致

    3.索引器没有自定义的名字(this关键字作为它的名字),而属性只能是自定义的名字

    4.索引器至少有一个参数eg:this[int i],而属性不能带有参数,属性中的set有一个隐含的参数value

    5.索引器可以重载,因此一个类中可以有多个索引器,调用时索引器通过数组下标索引,索引器是针对集合类型成员变量的,属性是不可以重载的   eg:Stu[0]=1;      Stu[1]=2;

    6.在接口中也可以声明索引器,接口索引器与类索引器的区别有两个:一是接口索引器不使用修饰符;二是接口索引器只包含访问器get或set,没有实现语句。访问器的用途是指示索引器是可读写、只读还是只写的,如果是可读写的,访问器get或set均不能省略;如果只读的,省略set访问器;如果是只写的,省略get访问器。在覆盖(override)实现索引器时,应该用base[E]来存取父类的索引器。

    eg: public interface IAddress  {      string this[int index]{get;set;}      string Address{get;set;}      string Answer();  }   一个索引器、一个属性和一个方法,其中,索引器是可读写的。

    7.属性可以为静态成员或实例成员,索引器必须为实例成员

    属性

    1.属性是封装的一种方法,是专门来控制访问性的一种语法结构,成员变量定义为私有类型(因为变量是表示对象特征的,不可以随便修改,为了安全性。)

    2.Value是关键字,它的类型取决于属性的数据类型。

    3.属性的访问修饰符总是public

    4.当修改属性或为属性赋值时,将值先传给value,再赋给成员变量

    5.属性的类型分为三类:只读(get)、读写(get&&set)、只写(set)

    6.Set:set访问器,Get:get访问器

    7.属性名与成员变量同名,书写时首写字母必须大写

    8.属性的语法格式:   访问修饰符  返回类型 属性名   {  get{}  set{}    }   eg:private string name;      public string Name      {  set{return name;}  get{name=value;}      }    

  • 相关阅读:
    JS中parseInt()、Numer()深度解析
    如何写好.babelrc?Babel的presets和plugins配置解析
    懒加载和预加载
    vuex 的基本使用之Module
    vue 错误分析
    PrintWriter 和 Scanner 类的组合使用
    FileReader类和FileWriter类的基本用法示例
    Android SDK下载和更新失败的解决方法
    IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
  • 原文地址:https://www.cnblogs.com/daisy-thq/p/3359944.html
Copyright © 2011-2022 走看看