title: c#: (Static) Class-Level Variables
body: <p>This is definitely a bit of a noob question, but my searches so afar haven't cleared the issue up for me.</p>
  
  <p>A want a particular console app to store several class-level variables. In one case, I want to store a copy of my logging object, which I'll use in various places within the class. In another case, I want to store a simple type, a int value actually, which is only going to be used internally (doesn't need to be a property).</p>
  
  <p>It appears that unless I specify these variables as static, I can't use them in Main() and beyond.</p>
  
  <p>My understanding of static objects is that their values are shared across all instances of an object. Under normal operation, I'd expect their to be only one instance of my app, so this issue isn't a problem - but it has highlighted a lack of understanding on my part of something that is fairly fundamental. </p>
  
  <p>In the case, of my logging object, I could see a case for making it static - sharing a log across multiple instances might be a benefit. However, it might not be the case... In the case of my int, I'd certainly never want this to be shared across instances.</p>
  
  <p>So...</p>
  
  <ul>
  <li>Am I misunderstanding the theory behind this?</li>
  <li>Is there a different way I should be declaring and using my class-level variables?</li>
  <li>Should I be avoiding using them? I could simply pass values as parameters from function to function, though it seems little a lot for work for no apparent gain.</li>
  </ul>
  
  <p>EDIT: OK, the message is clear - my understanding of statics was largely correct, but the problem was one of structure and approach. Thanks for your replies.</p>