这节讲三个小知识:索引器、ref、out。

索引器:

在一个类中,我们可以定义一个索引器,它可以让我们在外部像访问数组元素一样访问类的属性成员。

索引器的定义就像定义属性一样,只不过名称为this,后边接一个中括号声明索引类型,下面看示例代码:

class MyIndexer
{
private int[] a = { 1, 2, 35, 6, 3, 7 }; //定义一个索引器
public int this[int x]
{
get { return A[x]; }
}
}

上述代码中有一个数组,定义了一个索引器用来访问数组中的元素,索引器对类成员的访问也是通过get 和set ,此处之定义了get,也就是只读索引。在主方法中我们可以这样访问:

MyIndexer i = new MyIndexer ();
//使用索引器访问数据
Console.WriteLine (i[1]);

索引器的使得在某些情况下对属性的访问变得方便,我们也可以根据需求,定义多个索引器,只要签名不同即可。

ref、out关键字:

ref关键字用在参数列表中,用于将被ref修饰的参数是引用传参,也就是说在方法内部修改值会影响到外部的变量。

out关键字同样用在参数列表中,它用于向外传递引用,被out关键字修饰的参数,会在该方法运行完毕后接收到方法内部对应参数的赋值。

接下来看代码演示:

class refout
{
public void Testref (ref int rr)
{
rr = 100;
} public void Testout(out int oo)
{
oo = 20;
}
}
class Program
{
static void Main (string[] args)
{
int r = 10;
int o = 40; refout ro = new refout ();
ro.Testref (ref r); //此时的传递是引用,执行完毕后,r的值会变成100
ro.Testout (out o); //向外传递引用,方法执行完毕后实参o会接收到方法内部最后一次为oo赋的值
Console.WriteLine ($"r={r} o={o}");
}
}

运行结果为:

个人公众号,热爱分享,知识无价。

索引器和ref、out关键字的更多相关文章

  1. C#索引器

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  2. C# 索引器使用总结

    1.索引器(Indexer): 索引器允许类或者结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于他们的访问采用参数. 最简单的索引器的使用 /// <summary> ...

  3. C#索引器一

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  4. 索引器、哈希表Hashtabl、字典Dictionary(转)

    一.索引器 索引器类似于属性,不同之处在于它们的get访问器采用参数.要声明类或结构上的索引器,使用this关键字. 示例:   索引器示例代码 /// <summary> /// 存储星 ...

  5. 【C#】索引器

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  6. C# 索引器 学习

    转载原地址: http://www.cnblogs.com/lxblog/p/3940261.html 1.索引器(Indexer): 索引器允许类或者结构的实例按照与数组相同的方式进行索引.索引器类 ...

  7. C#索引器的用法

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  8. C# get 、set、索引器

    get 与 set C#类的属性有公有属性(public)和私有属性(private).如果直接将一个属性声明为public,则该类的任意实例可以随意获取或修改该属性的值,很不安全..NET Fram ...

  9. C# 之 索引器

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

随机推荐

  1. python plt画图横纵坐标0点重合

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot a ...

  2. Python内置函数作用及解析

    Python内置的函数及其用法.为了方便记忆,已经有很多开发者将这些内置函数进行了如下分类: 数学运算(7个)    类型转换(24个)    序列操作(8个)    对象操作(7个)    反射操作 ...

  3. 《逆向工程核心原理》——IAThook

    hook逻辑写入dll中,注入dll. #include "pch.h" #include <tchar.h> #include "windows.h&quo ...

  4. 攻防世界 reverse 进阶 notsequence

    notsequence  RCTF-2015 关键就是两个check函数 1 signed int __cdecl check1_80486CD(int a1[]) 2 { 3 signed int ...

  5. Android Studio 安装及配置

    安装时的那些事 •相关链接 [1]:无需翻墙的链接 [2]:Android Studio 安装教程 •从安装到放弃??? 初次接触 Android,并知道了开发 Android APP 的软件--An ...

  6. Kafka又出问题了!

    写在前面 估计运维年前没有祭拜服务器,Nginx的问题修复了,Kafka又不行了.今天,本来想再睡会,结果,电话又响了.还是运营,"喂,冰河,到公司了吗?赶紧看看服务器吧,又出问题了&quo ...

  7. 软工案例分析作业-CSDN

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 提升软件开发能力与团队意识 这个作业在哪个具体方面帮助我实 ...

  8. PYTHON工业互联网应用实战12—客户端操作

    本章节我们将实现与admin里类似的列操作"下达"功能,演示客户端是如何实现操作功能,同时,演示也会强调一点,何时合并你的功能代码,避免相同功能使用不同的代码段来实现,在企业开发中 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr

    目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务电 ...

  10. YARP实现Dapr服务调用的反向代理

    楔子 公司即将新开项目,打算用点时髦的技术,需要探探路.之前没做过微服务项目,没有技术栈方面的积(负)累(债), 干脆就上微软的分布式运行时Dapr......嗯......用来服务发现,然后等测试用 ...