码迷,mamicode.com
首页 > 其他好文 > 详细

ref传参时出错

时间:2014-10-09 12:37:33      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   sp   div   c   log   代码   

下面是一段正确的代码:

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

ref传参时出错

标签:style   blog   color   使用   sp   div   c   log   代码   

原文地址:http://www.cnblogs.com/vakeynb/p/ref.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!