C# 属性、索引

news/2024/7/5 4:00:01

属性(property: 

public string Name
{get{return _name;}set{_name = value;}
}    

 

简写为:

public string Name { set; get;}

 

索引器(index):

索引器为C#程序语言中泪的一种成员,它是的对象可以像数组一样被索引,使程序看起来更直观,更容易编写。

索引器和数组比较:

(1)索引器的索引值(Index)类型不受限制

(2)索引器允许重载

(3)索引器不是一个变量

索引器和属性的不同点

(1)属性以名称来标识,索引器以函数形式标识

(2)索引器可以被重载,属性不可以

(3)索引器不能声明为static,属性可以

 

要声明类或结构上的索引器,请使用this关键字,例如: 

public int this[int index] //声明索引器

{// get and set 访问

}

 

 索引器的修饰符有:new、public、protected、internal、private、virtual、sealed、override、abstract和extern。

 

当索引器声明包含extern修饰符时,称该索引器为外部索引器。因为外部索引器声明不提供任何实际的实现,所以它的每个访问器声明都由一个分号组成。

 

索引器的签名由其形参的数量和类型组成。它不包括索引器类型或形参名。如果在同一类中声明一个以上的索引器,则它们必须具有不同的签名。

 

索引器值不归类为变量;因此,不能将索引器值作为ref或out参数来传递。

 

索引必须是实例成员。

 

索引器使用示例:

using System;
class IndexerRecord
{private string [] data = new string [6];private string [] keys  = {"Author", "Publisher", "Title","Subject", "ISBN", "Comments" }; //注:程序中用了两种方法来索引://一是整数作下标,二是字符串(关键词名)作下标public string this[ int idx ]{set{if( idx >= 0 && idx < data.Length )data[ idx ] = value;}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{return this[ FindKey(key) ];}}private int FindKey( string key ){for( int i=0; i<keys.Length; i++)if( keys[i] == key ) return i;return -1;}static void Main(){IndexerRecord record = new IndexerRecord();record[ 0 ] = "马克-吐温";record[ 1 ] = "Crox出版公司";record[ 2 ] = "汤姆-索亚历险记";Console.WriteLine( record[ "Title" ] );Console.WriteLine( record[ "Author" ] );Console.WriteLine( record[ "Publisher" ] );Console.ReadKey(true);}
}

 


http://lihuaxi.xjx100.cn/news/244324.html

相关文章

java架构设计理解(一)

个人学习资源免费分享网站&#xff1a;http://xiaocaoshare.com/ 1.关于单机架构、集群架构、分布式架构理解&#xff1a; 单机架构&#xff1a;所有的代码都写在一个项目中&#xff0c;项目部署在一台服务器上 集群架构&#xff1a;就是单机复制几份&#xff0c;一起组成的…

(原)使用mkl计算特征值和特征向量

转载请注明出处&#xff1a; http://www.cnblogs.com/darkknightzh/p/5585271.html 参考文档&#xff1a;mkl官方文档 lapack_int LAPACKE_sgeev(int matrix_layout, char jobvl, char jobvr, lapack_int n, float* a, lapack_int lda, float* wr, float* wi, float* vl, lapac…

阿里巴巴开源的 Blink 实时计算框架真香

Blink 开源了有一段时间了&#xff0c;竟然没发现有人写相关的博客&#xff0c;其实我已经在我的知识星球里开始写了&#xff0c;今天来看看 Blink 为什么香&#xff1f; 我们先看看 Blink 黑色版本&#xff1a; 对比下 Flink 版本你就知道黑色版本多好看了。 你上传 jar 包的时…

Linux字符设备驱动程序的框架(新写法)

这是老版本内核的的Linux驱动注册函数写法&#xff1a; major register_chrdev(0, "hello", &hello_fops); /* (major, 0), (major, 1), ..., (major, 255)都对应hello_fops */ 新版本内核Linux驱动注册函数写法#define MAJOR(devid) ((unsigned int) ((devid…

【206】Firefox 扩展收集

Stylish NoSquint转载于:https://www.cnblogs.com/alex-bn-lee/p/5586159.html

java中锁的介绍及运用

个人免费资源分享网站&#xff1a;http://xiaocaoshare.com/ 1.悲观锁和乐观锁 对于同一个数据的并发操作&#xff0c;悲观锁认为自己在使用数据的时候一定有别的线程来修改数据&#xff0c;因此在获取数据的时候会先加锁&#xff0c;确保数据不会被别的线程修改。Java中&…

12 Java面向对象之多态

JavaSE 基础之十二12 Java面向对象之多态 ① 多态的概念及分类 多态的概念&#xff1a;对象的多种表现形式和能力多态的分类  1. 静态多态&#xff1a;在编译期间&#xff0c;程序就能决定调用哪个方法。方法的重载就表现出了静态多态。  2. 动态多态&#xff1a;在程序运行…

蓝懿教育九月二十七日记录

将VIew移动做成动画效果 这种动画效果没有中间的位移可以添加动画的View属性center&#xff0c;frame&#xff0c;alpha&#xff0c;transform , backgroundColor//继续做消失的动画[UIView animateWithDuration:1 animations:^{iv.alpha 0;} completion:^(BOOL finished) …