下面是一段正确的代码:
//基类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关键字修饰的参数在传递前无需显示初始化。
时间: 2024-11-14 16:31:07