Yep, that's fine - C# creates a new array on every params call.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dan Eloff
Sent: Saturday, October 11, 2008 2:00 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Why would you use MakeList over MakeListNoCopy?

On Sat, Oct 11, 2008 at 3:38 PM, Dino Viehland <[EMAIL PROTECTED]> wrote:
> The difference is whether or not you're the owner of the array.  If you've 
> accepted the array from some public location, even if it was a params method, 
> someone else could own the array and continue to modify it.  If you've 
> created the array yourself or can guarantee it won't change then it can 
> safely be used for the underlying object array for the List object.

That's what I figured about 5 minutes after I sent the email :( This
stuff is burning my brain. One thing that is unclear to me, if you do
l = MakeListNoCopy(x, y), is it legal to do l[0] = z ? It seems a
little shaky to me, but if mutating a params array is legal in C#,
then I suppose it shouldn't break.

Thanks,

-Dan


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dan Eloff
> Sent: Saturday, October 11, 2008 1:29 PM
> To: Discussion of IronPython
> Subject: [IronPython] Why would you use MakeList over MakeListNoCopy?
>
>        /// <summary>
>        /// Python runtime helper to create a populated instance of
> Python List object.
>        /// </summary>
>        public static List MakeList(params object[] items) {
>            return new List(items);
>        }
>
>        /// <summary>
>        /// Python runtime helper to create a populated instance of
> Python List object w/o
>        /// copying the array contents.
>        /// </summary>
>        [NoSideEffects]
>        public static List MakeListNoCopy(params object[] items) {
>            return List.FromArrayNoCopy(items);
>        }
>
> If the second method "just works" then why would you ever want to use 
> MakeList?
>
> I seem to be creating a lot of 1 and 2 item lists here, so I'm looking
> to make good use of one of these guys. (I really miss C# 3.0
> collection initializers)
>
> Work on porting _ast is going well, so far I've had no insurmountable
> obstacles. I expect to be done it by Monday. The AST produced is close
> (but not identical) to CPython, but that shouldn't matter. Each node
> has the same properties with the exact same types so walking the tree
> should work equally on both platforms.
>
> Thanks,
> -Dan
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to