title: How to define the constants the used also by the subclass?
body: <p>I need to define some constants that will be used by the base class and its sub class. 
  Not sure what is the correct way to define them. </p>
  
  <p>I understand the differences of const, readonly, static const, as well as public, protected, and private (while I seldom see "protected" is used in C#). How these constant should be defined? should them be public const, or public readonly, or private constant, or private readonly and use public getter/setter for subclass to use, or should them be defined as protected? </p>
  
  <p>Another question is about the variable FilePath in the BaseClass. FilePath will be used by some functions in the BaseClass as placeholder (the real value will be provided by subclass), should I define it as virtual? </p>
  
  <p>Could somebody provide general rules to follow? The following is an example of what I have:</p>
  
  <pre><code>public class BaseClass
  {
      public const string Country = "USA";
      public const string State = "California";
      public const string City = "San Francisco";
  
      public virtual string FilePath
      {
          get
          {
              throw new NotImplementedException();
          }
           set
          {
              throw new NotImplementedException();
          }
      }
  }
  
  public class Class1 : BaseClass {
  
       public Class1() {
           FilPath = "C:\test";
       }
  
       public string GetAddress() {
         return City + ", " + State + ", " + Country; 
       }
  
       public void CreateFile() {
         if (!Directory.Exist(FilePath)) {
              //create folder, etc 
          }
       }         
  }
  </code></pre>