I'm not heavy into the internals of VB, but here is my take. The tag property is a string, so an object always has the overhead of an empty string even when the tag is empty. This is a pointer which is a long integer (4 bytes). The pointer contains the value zero when the string (tag) has not been given a value.<br><br>On the other hand, if a string is created in code to hold the data, it will be the size of the string, plus the overhead (the 4 byte pointer), so it would seem that using the tag would save 4 bytes for the pointer because those bytes are already allocated when the object is created.<br><br>Since VB holds the length of strings, rather than using a null terminator as in C, there is probably more overhead for that as well (probably 4 more bytes). Again, this space is probably already allocated in the object and just wasted if tag is not used, so it may save 8 bytes or more to use the tag.<br><br>This is all based on best guess. Any other ideas?