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

时间: 2024-11-14 16:31:07

ref传参时出错的相关文章

关于SQL Server 2017中使用json传参时解析遇到的多层解析问题

原文:关于SQL Server 2017中使用json传参时解析遇到的多层解析问题 开发新的系统,DB部分使用了SQL Server从2016版开始自带的Json解析方式. 用了快半年,在个人项目,以及公司部分项目上使用了,暂时还没遇到大的问题,和性能问题. 今天在解析Json的多级参数遇到了点小问题,在此记录一下: 传参内容如下: 1 declare @json varchar(max)=N'{"Customer":36,"Positions":[{"I

小程序函数传参时{}的作用

在前台wxml的标签中bind绑定后台方法并传参时,正常情况时如下所示: ondata  (e) { console.log(e) }, 这样输出的是所有的属性结果 如果想要输出的是自己想要的结果,就需要这样: 如:想要 e 中的 detail 属性值: ondata  ({detail}) { console.log(detail) }, 这样只需包裹在 {} 中就可以了,输出的结果就只是你想要的 detail 结果 原文地址:https://www.cnblogs.com/Z_66/p/12

Mybatis 中在传参时,${} 和#{} 的区别

介绍 MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型. 在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者${parameterName}. #{} #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 例如:order by #{parameterName} //或取Map中的value#{Key}也是一样操作. 假设传入参数是“

axios的post传参时,将参数转为form表单格式

import axios from 'axios'; import alert from './alert.js'; import Qs from 'qs' //引入qs 时axios的自带模块 let env = process.env.NODE_ENV; let root = ''; if (env === 'development') { console.log("api"); } else if (env === 'production') { console.log(&quo

formidable上传文件时出错"EXDEV, rename....."

使用formadble时   var form = new formidable.IncomingForm(); 没设置form.uploadDir(),默认使用的是os.tmpDir(),也就是操作系统当前用户的默认临时目录 执行上传文件命令时就报错"EXDEV, rename.....", 网上查询http://ouyo.info/show.php?pid=1898说是权限问题无法临时保存文件(没测试使用   writeFileSync). 就手动指定了一个目录from.uploa

<a>和<button>URL传参时,效果是不同的,为什么呢?

问题描述: 按钮是 <form action="xx.jsp?t_id=<%=t_id%>"> <button type="submit">顶</button> </form> <a>标签是 <a href="xx.jsp?t_id=<%=t_id%>"> 为什么点击后,后台接收到的数据是不同的.前者是null,后者则可以是我想要传的t_id;

传参时Url中有中文报错

url中如果传了中文,浏览器会报错:The header content contains invalid characters. 原因:浏览器自动把这个url进行decodeURIComponent,英文就不用在意,但是中文直接decodeURIComponent就会出现乱码. 官方解释:有效的URI(通用资源标识符)不能包含某些字符,比如空格,用UTF-8编码转换所有无效的字符,让浏览器能够接收和理解. 解决方式:把带有中文的url先进行编码encodeURIComponent,在传给浏览器

函数传参时,默认参数为变量容易出现的问题

在定义函数时使用默认参数的时候,如果默认参数是变量的话,需要注意一下坑. 1 # This Python file uses the following encoding: utf-8 2 3 def add_end(l = []): 4 l.append('end') 5 print(id(l), l) 6 7 if __name__ == '__main__': 8 add_end() 9 add_end() 10 11 输出: 12 2510338155080 ['end'] 13 251

MVC去掉传参时的验证:从客户端中检测到有潜在危险的Request.QueryString值

解决方法:给Action添加属性[ValidateInput(false)]. 例: [ValidateInput(false)] public ActionResult Index(string org) { }