在此 Microsoft 示例中,将 Double 数组传递给函数MultiplyMatricesSequential(...)
and MultiplyMatricesParallel(...)
作为参数结果使用ByVal
修饰符:http://msdn.microsoft.com/de-de/library/dd460713(v=vs.110).aspx
数组中的值在这些函数中被修改,并且这些更改在函数调用返回后可用。
当我改变时ByVal
to ByRef
在功能上MultiplyMatricesSequential(...)
没有任何变化,当我更改为ByRef
在第二个函数中,IDE 抱怨 Lambda 表达式中操作的参数无法通过引用传递。
我现在想知道当使用时数组值在调用者中如何变化ByVal
是被强迫的吗?
当您将对象 ByVal 传递给函数时,您将指向它的指针放在堆栈上。然后函数可以修改对象的内部部分,但不能用新对象替换它。
当您通过 ByRef 传递对象时,您会将指向该对象指针的指针放入堆栈中。该函数现在可以用新对象替换整个对象。
如果您发送内在价值,例如Int32
,对于函数 ByVal ,值被放入堆栈中并且根本不能由函数编辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)