So if the get_Item or set_Item functions are called, control should pass to the indexer defined in the ArrayList source code; specifically to the get or set subsections, respectively?
I added some code to the indexer specified in ArrayList.cs to tell me if and when a program uses an ArrayList via indexers. I noticed numerous gets and sets to ArrayLists because of this code when I was doing a make install with the mcs source code. But when I ran the actual program I wanted to see this info for, I did not receive any output. I suppose I could have instrumented the wrong indexer, there are a bunch of them. But just as confirmation, a get_Item or set_Item call *will* transfer control to the appropriate class's indexer? -andrew -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of A Rafael D Teixeira Sent: January 30, 2004 8:46 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: RE: [Mono-list] System.Collections intricacies Well, the getItem/setITem pair IS the indexer. C# Indexer creation and usage syntax is just a shorthand form., like what we have for properties. I recommend you to read the common language runtime spec, to understand what the different compilers must do when transforming such constructs. Best regards, Rafael Teixeira Brazilian Polymath Mono Hacker since 16 Jul 2001 MonoBrasil Founding Member - Membro Fundador do MonoBrasil English Blog: http://monoblog.blogspot.com/ Brazilian Portuguese Blog: http://monoblog.weblogger.terra.com.br/ >From: "Andrew P. Wilson" <[EMAIL PROTECTED]> >To: <[EMAIL PROTECTED]> >Subject: [Mono-list] System.Collections intricacies >Date: Thu, 29 Jan 2004 14:36:35 -0500 > >Hello everyone: > > > >I was hoping someone would be able to help me out with some details about >indexers and collections and how they are used in mono. > > > >I was trying to implement some functionality to the ArrayList class in >System.Collections through the use of the ArrayLists indexers. > > > >I had thought that if you wrote the code snippet the ArrayList's indexer >function would be invoked 100 times because of the second for loop: > > > >/////////////// begin > >ArrayList myAL; > >myAL = new ArrayList(); > > > >for(int i=0; i<100; i++) > >myAL.Add(i); //(add a bunch of numbers to the array list) > > > >int sum = 0; > >for(int i=0; i<100; i++) > > sum = sum + (int)myAL[i]; > >/////////////// end > > > > > >However, I am finding that the indexer is not called at all and from >disassembling the executable, the following instructions are occurring >where >I would have thought the indexer would have been called: > >. > >. > >IL_0099: callvirt instance object class >[mscorlib]'System.Collections.ArrayList'::'get_Item'(int32) > >IL_009e: unbox [mscorlib]System.Int32 > >. > >. > > > >Normally, this wouldn't be a problem for me. However, I cannot find this >"get_Item" function anywhere in the mcs or mono source code. There is also >a corresponding "set_Item" function that is called as well, but again, I >cannot find it in the source code. > > > >Is there a situation where the ArrayList Indexer will be called? And do >the >get_Item and set_Item functions exist somewhere in the source code? > > > >Basically, all I want to be able to do is monitor accesses to an ArrayList >through some predefined interface, whether the indexer or these get_Item >and >set_Item functions. Any information about any of these things would be >much >appreciated. > > > >Thank you for your time, > > > >Andrew P. Wilson > >Electrical and Computer Engineering Department > >University of Toronto > > > _________________________________________________________________ MSN Messenger: instale gr�tis e converse com seus amigos. http://messenger.msn.com.br _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list
