I found something out that was pretty strange.
I have an object that's based off the IEditableObject interface. It maps to certain db fields- I'm trying to abstract the data layer from the application so that it can be replaced; we have a legacy system that we're going to try to get rid of down the line, so this is a first step in that direction. I was going to do a bulk memory copy based on the memory location of each field in the object, but by necessity, since some of the fields are nullable, we use nullable types to represent those fields, i.e. int? instead of int.
Going further, i realized that a nullable type is just a struct with a value and a bool for isnull, which makes sense, but I never thought of it that way. So I was going to have to get pointers to the fields to get the memory locations- but you can't get a pointer to a nullable type. I created a struct that was the exact same format as the nullable type, and was able to get a pointer to that...so I don't understand the logic behind this...