zoukankan
html css js c++ java
注意C#中的ref及out关键字
因为C#中参数默认是引用的,所以一直没注意ref及out参数修饰符的作用。一般的参考资料也没说清楚这二者的作用。
其实可以这样理解:ref及out就相当于C/C++中的对参数取指针,使用时就相当于把该参数的实际地址传到函数中,可以在函数中对其进行赋值。而指针与引用的差别在这里也是可以体现出来的:
public
void
foo1(StringBuilder s)
{
s.Append(
"
World
"
);
s
=
new
StringBuilder(
"
foo1
"
);
}
public
void
foo2(
ref
StringBuilder s)
{
s.Append(
"
World
"
);
s
=
new
StringBuilder(
"
foo2
"
);
}
StringBuilder s
=
new
StringBuilder(
"
Hello
"
);
foo1(s);
MessageBox.Show(s.ToString());
foo2(
ref
s);
MessageBox.Show(s.ToString());
这里的两次输出将分别是“Hello World”和“foo2”。通过这个例子应该可以较明显地区分加和不加ref的区别了。
而ref与out的区别就在于out类型的参数可以不必初始化,就是说可以未初始化的变量到函数体内,而必须在函数体内对该参数变量赋值。使用了ref或out后,在调用函数时参数必须显式地写明ref或out,且必须是lvalue。
查看全文
相关阅读:
PHP微信公众号支付,JSAPI支付方法,ThinkPHP5+微信支付
PHP微信扫码支付DEMO,thinkphp5+微信支付
解决vue axios跨域请求发送两次问题
解决navicat远程连接mysql很卡的问题
GIT的工作原理和基本命令
简单好用的网站压力测试工具
vscode中让html中php代码高亮
redis的安装及使用总结
tp32-layuicms项目介绍
vscode Vue格式化HTML标签换行问题
原文地址:https://www.cnblogs.com/wonderow/p/159286.html
最新文章
Linux常用网络工具:路由扫描之traceroute
Linux常用网络工具:hping高级主机扫描
Linux常用网络工具:fping主机扫描
ACE服务端编程5:ACE日志输出和跟踪
ACE服务端编程4:ACE跨平台之运行时初始化和关闭
ACE服务端编程3:ACE跨平台之分配堆内存
ACE服务端编程2:ACE跨平台之数据类型和宽字符
Bolt XML和JQBolt Lua代码自动补全插件配置教程
自己定义滚动条的颜色
去掉tppabs冗余代码,怎样批量去掉tppabs代码
热门文章
Pseudo-elements ::before, ::after 範例
网页设计师常用的PHOTOSHOP插件
响应式布局这件小事
百度地图坐标获取
一些前端框架工具
gotoTop返回顶部 JS
CSS3 圆角
input点击链接另一个页面,各种操作
WEB开发常用软件集合
mysql decimal类型如何保留后面的两位00?
Copyright © 2011-2022 走看看