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关键字修饰的参数在传递前无需显示初始化。

——当我们面对枯燥窘迫甚至是痛苦的生活时,只是缺少了提枪上阵去干他娘的勇气!
原文地址:https://www.cnblogs.com/vakeynb/p/ref.html