Variables and Expressions — Pass by Value vs Reference

DEX455 - Apex 开发入门指南

📄 第 13 页 🎬 视频课程

课程章节介绍

同学,咱们今天聊一个在写Apex代码时特别容易踩坑的概念——方法参数的传递方式。你想想,你写一个方法,传进去一个变量,在方法里一顿操作,出来后这个变量到底变了没?答案分两种情况。 第一种,如果你传的是基础类型,比如整数、字符串、布尔值,这些是,值传递,。什么意思呢?就好像你把这个变量的数值复印了一张纸,塞给方法。方法在里面把这张纸上的数字改成别的,跟你手里的原件没关系。方法一结束,那张复印件就消失了,你原来变量的值纹丝不动。所以,在方法里怎么折腾,外边都看不见。 第二种,如果你传的是对象类型,尤其咱们最常用的sObject,像Account、Contact这些,那就不一样了。它们走的是,引用传递,。但注意,不是把原对象整个复制一遍,而是把遥控器给了你。你在方法里拿着这个遥控器,不能把它变成另一个遥控器——也就是你不能让这个方法里的参数名指向另一个全新的对象,那个指向是定死的。但是,你能用遥控器去改电视的频道、音量!也就是说,你可以改变这个对象的字段值,比如改改Name、Phone这些,方法结束出来后,外边的那个对象字段真的变了。 因为这变化会影响到外部对象的状态,所以写触发器、写服务类的时候,心里得有这根弦,该不该改,什么时候改,一定要想清楚。好,这块先讲到这里,咱们休息一下,有问题随时提。

关键词

Apex Salesforce Developer Guide