I'm using IronPython in VS2012 and trying to call a .Net function which takes in a Ref parameter,
Lib.dll
public int GetValue(ref double value)
{
...
}
Python:
import clr
clr.AddReference('Lib.dll')
from LibDll import *
value =0.0
x = GetValue(value)
am I missing something, in C# we use ref
along with the variable name, what about here in Python?
What is Pass by Reference In Python? Pass by reference means that you have to pass the function(reference) to a variable which refers that the variable already exists in memory. Here, the variable( the bucket) is passed into the function directly.
When Mutable objects such as list, dict, set, etc are passed as arguments to the function call, then it can be considered as Call by reference in Python. This is because when the values are modified within the function then the change also gets reflected outside the function.
Python passes arguments neither by reference nor by value, but by assignment.
There are two ways you can invoke methods with out or ref parameters from IronPython.
In the first case the call is handled by automatic marshalling. The return value and changed refs are wrapped in a tuple and (while having 15.1 as an example double to be passed) can be used like:
(returned, referenced) = GetValue(15.1)
The more explicit way is providing a prepared clr-reference:
refParam = clr.Reference[System.Double](15.1)
result = GetValue(refParam)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With