Mark Russo wrote:
In IronPython 2.0, when I replace a Point object in a list using assignment, a copy of the Point object is used to replace the original list element rather than the original Point itself. This does not happen with user-defined objects. It also does not happen with Point objects in IronPython 1.1.

Point objects are value types, so some operations cause them to be copied. Probably the way they are used under the hood has changed with IronPython 2.

Michael


IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
>>> clr.AddReference("System.Drawing")
>>> from System.Drawing import *
>>>
>>> class C(object): pass
...
>>> def test1():
...     p1 = C()                # Create two objects
...     p2 = C()
...     l = [p1]                # Put one in a list
...     print id(l[-1]), id(p2) # Print ids of object in list (p1) and p2
...     l[-1] = p2              # Replace p1 with p2 in list
...     print id(l[-1]), id(p2) # Print ids of object in list and p2
...
>>> def test2():
...     p1 = Point(1,2)         # Create two Points
...     p2 = Point(3,4)
...     l = [p1]                # Put one in a list
...     print id(l[-1]), id(p2) # Print ids of Point in list (p1) and p2
...     l[-1] = p2              # Replace p1 with p2 in list
...     print id(l[-1]), id(p2) # Print ids of Point in list and p2
...
>>> test1()
43 44
44 44
>>> test2()
45 46
47 46 # The id of the Point before and after adding to the list is different
>>>

Here is the same program in IronPython 1.1

IronPython 1.1 (1.1) on .NET 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.

<snip>

>>> test1()
43 44
44 44
>>> test2()
45 46
46 46 # The id of the Point before and after adding to the list is the same
>>>

... or am I missing something.


------------------------------------------------------------------------
Send e-mail faster without improving your typing skills. Get your HotmailĀ® account. <http://windowslive.com/online/hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_speed_122008>
------------------------------------------------------------------------

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to