title: When to use Shared methods in .NET
body: <p>I'm get kind of getting mixed messages about this so I'm hoping someone can clear this up for me.</p>
  
  <p>Should I be using Shared methods/functions in the following situation:</p>
  
  <p>I have a generic class named "Person". This class represents a person in the database.</p>
  
  <p>I have a manager class named "PersonManager". This class contains methods which adds, updates, deletes individual Person objects. A method also exists to lookup Persons from the database.</p>
  
  <p>Should these methods in the manager class be declared as shared methods? Or is it more appropriate to create a new instance of the PersonManager class each time and call the appropriate method on it.</p>
  
  <p>So, if shared:</p>
  
  <pre><code>PersonManager.AddPerson(NewPerson)
  </code></pre>
  
  <p>versus non-shared:</p>
  
  <pre><code>Dim MyPersonManager as PersonManager
  MyPersonManager.AddPerson(NewPerson)
  </code></pre>
  
  <p>When looking up Persons, the shared version would be:</p>
  
  <pre><code>Dim dt as New DataTable
  dt = PersonManager.GetPersons
  </code></pre>
  
  <p>versus the non-shared version:</p>
  
  <pre><code>Dim dt as New DataTable
  Dim MyPersonManager as New PersonManager
  dt = MyPersonManager.GetPersons
  </code></pre>