A few more things to consider -
First, you want to make sure that the structures are immutable (in general). Because of this, a good rule is the absence of structures containing reference types. Lines can be an exception to this, since they are immutable in C #, but from the point of view of the universal rule of thumb for design, I would be wary of this.
Secondly, there is another use case for structures that have not been mentioned so far - a large number of small objects. If you have a large list or an array of small objects, structures provide significantly better cache consistency and are absolutely critical. This is why most 3D engines use structures for points / vectors - they tend to have large arrays of points for vertices, etc.
It is worth noting that performance is an important part of your application. For example, in one of my applications, changing one type from a class to a structure aligned with 40% of the long (> 5-minute runtime) process. If objects that are close to each other in memory, if you use them repeatedly in heavy mathematical calculations, you can make huge profits.
Now - in your case, having 2 lines and a DateTime will probably not see any improvement from this. The type of routines that will run on strings will probably not perform heavy calculations (hopefully), i.e. Convert half a million points in space or make a great matrix decision, etc.
Finally, you will notice that .net3.5sp1 made the structures more useful. Prior to 3.5sp1 (on x86), there were no built-in methods with struct calls. This has limited performance capabilities through structures. Updating your structure can make the old structure code much, much faster (in some cases).
Reed Copsey Mar 07 '09 at 2:10 2009-03-07 02:10
source share