zoukankan      html  css  js  c++  java
  • 索引器和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]);

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

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

       运行结果为:

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

  • 相关阅读:
    gitlab授权登录
    mysql的sql_mode设置
    fork了别人项目怎么保持更新呢?
    memcache命令参数详解
    memcache 操作详解
    字符串拼接性能对比
    yum设置镜像
    ifconfig找不到命令怎么通过工具连
    this is incompatible with sql_mode=only_full_group_by
    jmeter切换语言
  • 原文地址:https://www.cnblogs.com/charlesmvp/p/13859520.html
Copyright © 2011-2022 走看看