Home All Groups Group Topic Archive Search About

Problem with - Edit Item of Collections.Generic.List(Of SearchAreaListItem)

Author
27 Mar 2006 6:28 PM
snesbit
I have a structure called SearchAreaListItem.

The structure has some properties.

The application implements this as a collection.generic.list(of SearchAreaListItem)

I load the collection up  item at a time stuffing values into the item then adding the item to the
collection.


Now here come the rub.

There is one property attached to SearchAreaListItem, that I need to CHANGE so we can track whether the item has been accessed.

However when I try the following;


    STEP 1:    Dim SearchAreaList as new collection.generic.list(of SearchAreaListItem)

    STEP 2:    Call function to load each item and add to collection

    STEP 3:    Try to set the Accessed property on Item X

                             SearchAreaList.Item(x).Accessed = True

    STEP 3   is not acceptable to Visual Studio and I get the design time error

                        Error 1 Expression is a value and therefore cannot be the target of an assignment.

Why can't I set a property of a structure through an index of  a collection.generic.list(of SearchAreaListItem)??

Author
27 Mar 2006 6:51 PM
Mattias Sjögren
>Why can't I set a property of a structure through an index of  a collection.generic.list(of SearchAreaListItem)??

Becuase a structure givs you a value type, and therefore the List
indexer returns a copy of the instance. Even if the compiler let you
do what you want, you would modify the temporary copy, not the one in
the list. The solution is to use a class (a reference type) instead.


Mattias

--
Mattias Sjögren [C# MVP]  mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
Author
27 Mar 2006 6:52 PM
Kerry Moorman
snesbit,

In order to do what you want, SearchAreaListItem needs to be a class, not a
structure.

Kerry Moorman


Show quoteHide quote
"snesbit" wrote:

> I have a structure called SearchAreaListItem.
>
> The structure has some properties.
>
> The application implements this as a collection.generic.list(of SearchAreaListItem)
>
> I load the collection up  item at a time stuffing values into the item then adding the item to the
> collection.
>
>
> Now here come the rub.
>
> There is one property attached to SearchAreaListItem, that I need to CHANGE so we can track whether the item has been accessed.
>
> However when I try the following;
>
>
>     STEP 1:    Dim SearchAreaList as new collection.generic.list(of SearchAreaListItem)
>
>     STEP 2:    Call function to load each item and add to collection
>
>     STEP 3:    Try to set the Accessed property on Item X
>
>                              SearchAreaList.Item(x).Accessed = True
>
>     STEP 3   is not acceptable to Visual Studio and I get the design time error
>
>                         Error 1 Expression is a value and therefore cannot be the target of an assignment.
>
> Why can't I set a property of a structure through an index of  a collection.generic.list(of SearchAreaListItem)??
Author
28 Mar 2006 5:41 AM
Cor Ligthert [MVP]
Snesbit,

It sounds for me so crazy

A generic list of a value that is placed on the stack

Cor
  "snesbit" <snes***@portaltech.com> schreef in bericht news:OehW3wcUGHA.5372@TK2MSFTNGP09.phx.gbl...
  I have a structure called SearchAreaListItem.

  The structure has some properties.

  The application implements this as a collection.generic.list(of SearchAreaListItem)

  I load the collection up  item at a time stuffing values into the item then adding the item to the
  collection.


  Now here come the rub.

  There is one property attached to SearchAreaListItem, that I need to CHANGE so we can track whether the item has been accessed.

  However when I try the following;


      STEP 1:    Dim SearchAreaList as new collection.generic.list(of SearchAreaListItem)

      STEP 2:    Call function to load each item and add to collection

      STEP 3:    Try to set the Accessed property on Item X

                               SearchAreaList.Item(x).Accessed = True

      STEP 3   is not acceptable to Visual Studio and I get the design time error

                          Error 1 Expression is a value and therefore cannot be the target of an assignment.

  Why can't I set a property of a structure through an index of  a collection.generic.list(of SearchAreaListItem)??