VB.NET 对于类型的传递按值或者按引用
VB.NET 对于类型的传递按值或者按引用,(byval byref) C# 多了个out。
有时候面试的时候我会问个小问题,嘿嘿,看看对C#基本的语法有没有熟悉。
比如
public void XXX( byval form as Form)
跟
public void XXX(byref form as Form)
有啥区别?其实很简单对应为C++ 就是 void XXX( Form * form) 跟 void XXX(Form **form)
所谓的按照值传递跟引用传递都有一个基本的问题就是谁的值,谁的地址。
以上的两个方法,第一个传递的是Form这个对象的地址这个值。所以在第一个方法中你这样写
form.xxx=zzz //可以更改原来form对象的值
form=New Form()
form.xxx=yyy;
事实上,不会影响原来form的值。
而第二个就不一样,他传递的是地址的地址,所以他可以更改原来form的值。
这个问题放到WebService 中就更奇怪了。
[WebMethod()]
public void XXX( byval p as Person)
[WebMethod()]
public void YYY( byref p as Person)
我们都说webservice是没有状态的,那么第一个方法跟第二个方法有啥区别呢?第一个方法中如果也是类似的代码,他能够影响客户端传递给他的对象的状态吗? 第二个呢?
看看微软的实现,才发现他做了很多诡异的代码。
看看他的第二个方法的WSDL,明明return的是void的,他应是给你返回一个对象。
<soap:Body>
<HelloWorldpersonResponse xmlns="http://tempuri.org/">
<p>
<Name>string</Name>
</p>
</HelloWorldpersonResponse>
</soap:Body>
然后客户端的代理做什么操作呢?呵呵。以下代码
Public Sub HelloWorldperson(ByRef p As Person)
Dim results() As Object = Me.Invoke("YYY", New Object() {p})
p = CType(results(0),Person)
End Sub
MS对标准的就是这么践踏的,呵呵
VB.NET 对于类型的传递按值或者按引用相关推荐
- java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
场景: 大家都知道基本的数据类型,int,float等等这种是按值传递的.但是对于String,对象,Integer是怎样传递呢? 原理知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副 ...
- 【基础中的基础】引用类型和值类型,以及引用传递和值传递
一直在博客园怼人,非常惭愧.所以郑重决定: 好好写一篇干货,然后再接着怼人. 这是一起帮上陈百万同学的求助,讲了一会之后,我觉得很有些普世价值,干脆就发到园子来.面向小白,高手轻拍. 我们从最简单的说 ...
- C#中 类和结构 值类型和引用类型以及 值传递和引用传递
类: 概念就不赘述了. 结构: 1>它是从System.Object派生.但不能从别的类中派生,也不能从别的结构中继承. 2>它是一个值类型.呵呵. 3>里面还能写方法和字段, 如: ...
- java中是引用传递还是值传递....
刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...
- 你真的了解引用传递与值传递吗?
文章目录 1.方法参数的两种类型 2.方法参数的规则 3.代码验证 3.1一个方法不能修改一个基本数据类型的参数 3.2一个方法可以改变一个对象参数的状态 3.3一个方法不能让对象引用一个新的对象 4 ...
- integer是值传递还是引用传递_值传递与引用传递
值传递:指的是在方法调用时,传递的是参数是按值的拷贝传递. 特点:传递的是值的拷贝,也就是传递后就互不相关了. 引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是 ...
- java不可变类型_Java中的值类型:为什么它们不可变?
java不可变类型 值类型不必是不变的. 但是他们是. 在上一篇文章中,我讨论了Java中指针与引用之间的区别以及如何传递方法参数(按值传递或按引用传递). 这些与Java中尚不存在的值类型密切相关( ...
- java还值_Java到底是引用传递还是值传递
前言 前段时间在群里看到类似这样一个问题,下面的代码会输出什么呢? public void test(){ String str = "hello"; change(str); S ...
- java引用传递_理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...
最新文章
- 即将直播:新一代大数据技术构建PB级云端数仓实践
- java发邮件无主题,使用SpringCloud过程中遇到的一些问题
- 第十届数据技术嘉年华活动彩蛋!
- mac mysql-share_mac下安装mysql
- 【Vue2.0】—常用的内置指令(九)
- idea调试怎么跳出循环_Intellij IDEA调试功能使用总结
- 重t2加权是什么意思_魔兽世界怀旧服:详解盗贼T2.5套装,别犹豫真香
- php cas 票据认证失败,解决CAS客户端验证ST票据时发生的TicketValidationException问题...
- Pawn Storm网络间谍行动再度现身
- 计算机中丢失amtlib.dll如何办,amtlib.dll文件找不到怎么办-amtlib.dll文件找不到的解决办法...
- 在blog中放置北京奥运倒计时Flash
- 肖文吉mysql_疯狂软件教育中心肖文吉老师_MYSQL视频教程
- dubbox与dubbo
- 各种动漫情侣姿势的画法
- java协同过滤算法的演唱会门票售票系统
- 游戏的本质【转自网易】
- Nginx 基础配置
- 史上最全《计算机网络 自顶向下方法》答案合集
- Win获取本地SVN帐号密码
- python --安装pylab