微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

参考类型参数问题

如何解决参考类型参数问题

| 我了解到传递的引用类型参数只是引用的副本。如果将传入的Refernece参数点设置为被调用方法内的另一个对象,则原始引用将不会更改。 我有一个测试方法来测试引用类型参数的传递。使用有效的SystemSwEvent类型对象从该测试方法调用“ 0”方法。在
reftest()
方法内部,调用
processEvScanDataAvailable(EvScanDataAvaialble systemSwEvent)
方法。在
processEvScanDataAvailable(EvScanDataAvaialble systemSwEvent)
方法内部,我将传入的引用参数设置为
null
。我希望ѭ1中的参数不应更改。但这不是事实。它将立即更改为null。为什么?     

解决方法

  为什么? 我怀疑这是调试器问题,不能代表CLR内部实际发生的情况。 尝试为您的参数使用不同的变量名,这种现象将消失。     ,调试器在当前上下文中识别名称并显示该值。您将光标指向实际触发当前正在执行的方法(当前上下文)的地方只是一个巧合。 还要注意,您可以使用“调用堆栈”工具检查调用方方法的参数。     ,默认情况下,对象引用是按值传递的(如果您不具备
ref
out
的资格),因此该方法将接收对象引用的副本-将副本设置为
null
不会更改原始对象引用,因此您声称看到的内容是不可能的,并且很可能只是误解了调试器中看到的内容。     ,调试器感到困惑,因为您的参数和变量具有相同的名称。如果更改参数的名称,则会注意到该调试器不再提供有关传递给方法的变量的信息,而仅提供有关方法内部的变量的信息。 只需更改该参数的名称,您将不再遇到此问题。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。