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

  • Thread starter Thread starter snesbit
  • Start date Start date
S

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)??
 
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
 
snesbit,

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

Kerry Moorman
 
Snesbit,

It sounds for me so crazy

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

Cor
"snesbit" <[email protected]> schreef in bericht 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)??
 
Back
Top