C# 索引器和ref、out关键字

    这节讲三个小知识:索引器、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]);

d364c92193b4e62962fb0bc547aa7c6a.png

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

    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}");
    }
}

    运行结果为:

b24d0988a768f20d3330a0514a3e058c.png

声明

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值