Home All Groups Group Topic Archive Search About

Read-only collection...

Author
5 Apr 2006 1:43 PM
Lucvdv
Maybe a dumb question (if those exist), but how do you...

    Private m_Stuff As New System.Collections.ArrayList

    Public ReadOnly Property Stuff() As System.Collections.ArrayList
        Get
            Return m_Stuff
        End Get
    End Property

disable the Add and AddRange methods (or something similar), so the
property becomes a read-only array/list in addition to being one that can't
be replaced?

Implement enumeration yourself, or is there an easier method?

Author
5 Apr 2006 1:54 PM
Larry Lard
Lucvdv wrote:
Show quoteHide quote
> Maybe a dumb question (if those exist), but how do you...
>
>     Private m_Stuff As New System.Collections.ArrayList
>
>     Public ReadOnly Property Stuff() As System.Collections.ArrayList
>         Get
>             Return m_Stuff
>         End Get
>     End Property
>
> disable the Add and AddRange methods (or something similar), so the
> property becomes a read-only array/list in addition to being one that can't
> be replaced?
>
> Implement enumeration yourself, or is there an easier method?

The Framework authors have done this for you. ArrayList (in common with
many other collections, I think) has a Shared method called ReadOnly
which:

Returns a list wrapper that is read-only.

Overload List

Returns a read-only ArrayList wrapper.

[Visual Basic] Overloads Public Shared Function ReadOnly(ArrayList) As
ArrayList

Returns a read-only IList wrapper.

[Visual Basic] Overloads Public Shared Function ReadOnly(IList) As
IList

--
Larry Lard
Replies to group please
Author
7 Apr 2006 8:27 AM
Lucvdv
On 5 Apr 2006 06:54:04 -0700, "Larry Lard" <larryl***@hotmail.com> wrote:

> The Framework authors have done this for you. ArrayList (in common with
> many other collections, I think) has a Shared method called ReadOnly
> which:

Thanks.

I expected something like that, but didn't dig deep enough.  I went looking
for a 'readonly' or similar method/property in intellisense, and didn't see
it because it doesn't show up unless you select the "all" tab in 2005 or go
looking for it via the type itself instead of through an instance.
Author
5 Apr 2006 1:59 PM
Claes Bergefall
In 2005 use the generic ReadOnlyCollection(Of T) class
In 2003 make your own by inheriting ReadOnlyCollectionBase

   /claes

Show quoteHide quote
"Lucvdv" <replace_n***@null.net> wrote in message
news:l0i7325k3olptc7390lobrt4t267e6jg2a@4ax.com...
> Maybe a dumb question (if those exist), but how do you...
>
>    Private m_Stuff As New System.Collections.ArrayList
>
>    Public ReadOnly Property Stuff() As System.Collections.ArrayList
>        Get
>            Return m_Stuff
>        End Get
>    End Property
>
> disable the Add and AddRange methods (or something similar), so the
> property becomes a read-only array/list in addition to being one that
> can't
> be replaced?
>
> Implement enumeration yourself, or is there an easier method?