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 对于类型的传递按值或者按引用相关推荐

  1. java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...

    场景: 大家都知道基本的数据类型,int,float等等这种是按值传递的.但是对于String,对象,Integer是怎样传递呢? 原理知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副 ...

  2. 【基础中的基础】引用类型和值类型,以及引用传递和值传递

    一直在博客园怼人,非常惭愧.所以郑重决定: 好好写一篇干货,然后再接着怼人. 这是一起帮上陈百万同学的求助,讲了一会之后,我觉得很有些普世价值,干脆就发到园子来.面向小白,高手轻拍. 我们从最简单的说 ...

  3. C#中 类和结构 值类型和引用类型以及 值传递和引用传递

    类: 概念就不赘述了. 结构: 1>它是从System.Object派生.但不能从别的类中派生,也不能从别的结构中继承. 2>它是一个值类型.呵呵. 3>里面还能写方法和字段, 如: ...

  4. java中是引用传递还是值传递....

    刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...

  5. 你真的了解引用传递与值传递吗?

    文章目录 1.方法参数的两种类型 2.方法参数的规则 3.代码验证 3.1一个方法不能修改一个基本数据类型的参数 3.2一个方法可以改变一个对象参数的状态 3.3一个方法不能让对象引用一个新的对象 4 ...

  6. integer是值传递还是引用传递_值传递与引用传递

    值传递:指的是在方法调用时,传递的是参数是按值的拷贝传递. 特点:传递的是值的拷贝,也就是传递后就互不相关了. 引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是 ...

  7. java不可变类型_Java中的值类型:为什么它们不可变?

    java不可变类型 值类型不必是不变的. 但是他们是. 在上一篇文章中,我讨论了Java中指针与引用之间的区别以及如何传递方法参数(按值传递或按引用传递). 这些与Java中尚不存在的值类型密切相关( ...

  8. java还值_Java到底是引用传递还是值传递

    前言 前段时间在群里看到类似这样一个问题,下面的代码会输出什么呢? public void test(){ String str = "hello"; change(str); S ...

  9. java引用传递_理解Java中的引用传递和值传递

    关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...

最新文章

  1. 即将直播:新一代大数据技术构建PB级云端数仓实践
  2. java发邮件无主题,使用SpringCloud过程中遇到的一些问题
  3. 第十届数据技术嘉年华活动彩蛋!
  4. mac mysql-share_mac下安装mysql
  5. 【Vue2.0】—常用的内置指令(九)
  6. idea调试怎么跳出循环_Intellij IDEA调试功能使用总结
  7. 重t2加权是什么意思_魔兽世界怀旧服:详解盗贼T2.5套装,别犹豫真香
  8. php cas 票据认证失败,解决CAS客户端验证ST票据时发生的TicketValidationException问题...
  9. Pawn Storm网络间谍行动再度现身
  10. 计算机中丢失amtlib.dll如何办,amtlib.dll文件找不到怎么办-amtlib.dll文件找不到的解决办法...
  11. 在blog中放置北京奥运倒计时Flash
  12. 肖文吉mysql_疯狂软件教育中心肖文吉老师_MYSQL视频教程
  13. dubbox与dubbo
  14. 各种动漫情侣姿势的画法
  15. java协同过滤算法的演唱会门票售票系统
  16. 游戏的本质【转自网易】
  17. Nginx 基础配置
  18. 史上最全《计算机网络 自顶向下方法》答案合集
  19. Win获取本地SVN帐号密码
  20. python --安装pylab

热门文章

  1. 补天五星计划范围更新,还有单个漏洞额外10000元现金奖励?!
  2. Java多线程设计要点
  3. idea-Java文件结构
  4. 【原/转】UITableview性能优化总结
  5. 庄河投资10亿元强力打造“智慧城市”
  6. innodb 共享表空间 转 独立表空间 详细说明
  7. [转]sqlserver 创建分区表
  8. TableView Within Alert
  9. java 数据结构--希尔排序
  10. 一个小偷写给失主的信