First of all, the static keyword.
I've read several articles and past threads on here covering the static keyword. I haven't found many scenarios listed of when I should use it. All I know is it doesn't create an object on the heap which tells me it would be good from a performance point of view for an object used a lot.
Is there any other reason to use it?
Also, I have read something about the static keyword and how it shouldn't be used with instance variables or to alter state. Can someone clarify this? It seems like this is a case of 2+2 but I can't get an answer (missing a few fundamental and simple pieces of knowledge).
Lastly, on the topic of thread safety, what should I look for in my code to get an idea of thread safety?
I have posted this in VB.NET too because I don't think different languages (C#/VB.NET) will have different rules.
Thanks