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)??
Mattias Sjögren - 27 Mar 2006 19:51 GMT
>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

Signature
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
Kerry Moorman - 27 Mar 2006 19:52 GMT
snesbit,
In order to do what you want, SearchAreaListItem needs to be a class, not a
structure.
Kerry Moorman
> I have a structure called SearchAreaListItem.
>
[quoted text clipped - 24 lines]
>
> Why can't I set a property of a structure through an index of a collection.generic.list(of SearchAreaListItem)??
Cor Ligthert [MVP] - 28 Mar 2006 06:41 GMT
Snesbit,
It sounds for me so crazy
A generic list of a value that is placed on the stack
Cor
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)??