zoukankan      html  css  js  c++  java
  • ref传参时出错

    下面是一段正确的代码:

    //基类A
    public class A
    {
        public void SomeMethod(A a)
       {
      
       }
    }
    //派生类B
    public class B:A
    {
    
    }
    //在参数传递中,可以使用A类型的参数接收B类型的对象,代码如下:
    A a=new A();
    B b=new B();
    a.SomeMethod(b);
    //上面的代码编译完全正常,这说明可以讲派生类对象传递给其基类类型的参数
    //那么同样的道理是否可以将 System.Object类与string类型联合一起呢?
    public class TransferClass
    {
       public TransferClass()
       {
        //...
        }
       public void TransferMethod(ref object obj)
       {
    
       }
    }
    //下面是调用方法:
    TransferClass TransferObject =new TransferClass();
    string testStr="Hello!bitch!";
    TransferObject.TransferMethod(ref testStr);

    那么会发现编译出错!

    分析:ref修饰符使得TransferMethod方法中的代码能够改变该变量的值,即传入的参数值和传出的参数值可能是不同。

    解决:1)TransferMethod参数类型设置为string类型。

            2)string->object,再传参数

    说明:传递到ref参数的变量必须首先初始化,然后再传。这与out不同,out关键字修饰的参数在传递前无需显示初始化。

    ——当我们面对枯燥窘迫甚至是痛苦的生活时,只是缺少了提枪上阵去干他娘的勇气!
  • 相关阅读:
    map按照值排序
    结构体的三种排序方式
    归并排序
    数组模拟双向链表
    二刷斐波那契高精度
    2019年9月训练(贰)区间DP (luogu 4290)
    2019年9月训练(壹)数位DP (HDU 2089)
    2019年8月训练(贰)
    2019年8月训练(壹)二分,三分
    2019年7月训练(柒)
  • 原文地址:https://www.cnblogs.com/vakeynb/p/ref.html
Copyright © 2011-2022 走看看