The dotNetMXSValue value class holds another value. The dotNetMXSValue can be assigned to .net objects. A "proxy"DotNet value is actually stored to theDotNet object, and that proxy points back to the dotNetMXSValue.
As long as the DotNet object holds the proxy value, the dotNetMXSValue and the value it holds are protected from garbage collection.
The value held by a dotNetMXSValue object can be read from its read-only .value
property.
Available in 3ds Max 9 and higher.
EXAMPLE
a = color 10 20 30 --MAXScript color value b = dotNetMXSValue a --DotNet value holding the MAXScript value tv = dotnetobject "treeview" --DotNet TreeView control tv.tag = b --The tag is set to the color tv.tag a=b=undefined --Both a and b are set to undefined gc() --and manual garbage collection is requested --BUT the color value and dotNetMXSValue protected are from --collection because the treeview instance holds --the dotNetMXSValue proxy! tv = undefined --assign undefined to the treeview variable gc() --and request garbage collection again --This time both the color value and the dotNetMXSValue are not --protected from collection
Note that the above garbage collection may not delete the color value and the dotNetMXSValue because the DotNet garbage collector has not deleted the treeview and freed its values yet. One can force manual garbage collection of DotNet:
EXAMPLE
dgc = dotnetclass "system.gc" dgc.collect() gc() -- color value and dotNetMXSValue collected