First answer: AFAIK, there's no difference between the compiled code for those two examples. It is definitely the case that the new operator will always allocate new memory on the heap and the previous memory referenced by the variable will be deallocated and garbage collected.
Second answer: there is a certain amount of indirection involved with using properties as opposed to public fields, but it's really not severe enough to be worrying about optimising it. It's much better practice to use properties, as it makes your code more maintainable.
Are you actually having performance issues, or is this premature optimisation? The .NET runtime is pretty damn performant, and the garbage collector and property code are particularly good. And the C# compiler is one of the best optimising compilers ever, and a lot of the time you're better off using the simplest approach and letting it do its job.
On that note, are you using XNA 2.0, or the 3.0 beta? If you can, use the beta, as it allows you to use Visual C# 2008 and the C# 3.0 compiler, which is very, very good, and provides lots of coding shortcuts which often get optimised well. Twinkle, twinkle, little star, I don't wonder what you are:
You're the cooling down of gases, forming into solid masses. |