title: C# error: "An object reference is required for the non-static field, method, or property"
body: <p>I have two classes, one for defining the algorithm parameters and another to implement the algorithm:</p>
  
  <p><strong>Class 1 (algorithm parameters):</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace VM_Placement
  {
      public static class AlgorithmParameters
      {
          public static int pop_size = 100;
          public static double crossover_rate = 0.7;
          public static double mutation_rate = 0.001;
  
          public static int chromo_length = 300;
          public static int gene_length = 4;
          public static int max_allowable_generations = 400;
  
          static Random rand = new Random();
          public static double random_num = rand.NextDouble();
      }
  }
  </code></pre>
  
  <p><strong>Class 2 (implement algorithm):</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace VM_Placement
  {
      public class Program
      {
          public struct chromo_typ
          {
              public string   bits;
              public float    fitness;
  
              //public chromo_typ(){
              // bits = "";
              // fitness = 0.0f;
              //}
              chromo_typ(string bts, float ftns)
              {
                  bits = bts;
                  fitness = ftns;
              }
          };
  
          public static int GetRandomSeed()
          {
              byte[] bytes = new byte[4];
              System.Security.Cryptography.RNGCryptoServiceProvider rng =
                new System.Security.Cryptography.RNGCryptoServiceProvider();
              rng.GetBytes(bytes);
              return BitConverter.ToInt32(bytes, 0);
          }
  
          public string GetRandomBits()
          {
              string bits="";
  
              for (int i = 0; i &lt; VM_Placement.AlgorithmParameters.chromo_length; i++)
              {
                  if (VM_Placement.AlgorithmParameters.random_num &gt; 0.5f)
                      bits += "1";
                  else
                      bits += "0";
              }
              return bits;
          }
  
          public static void Main(string[] args)
          {
              Random rnd = new Random(GetRandomSeed());
  
              while (true)
              {
                  chromo_typ[] Population = new chromo_typ[VM_Placement.AlgorithmParameters.pop_size];
                  double Target;
  
                  Console.WriteLine("\n Input a target number");
                  Target = Convert.ToDouble(Console.ReadLine());
  
                  for (int i = 0; i &lt; VM_Placement.AlgorithmParameters.pop_size; i++)
                  {
                      Population[i].bits = GetRandomBits();
                      Population[i].fitness = 0.0f;
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>I am getting an error on <code>Population[i].bits = GetRandomBits();</code> in <code>Main()</code>.</p>
  
  <p>Error is:</p>
  
  <blockquote>
    <p>An object reference is required for the non-static field, method, or property 'VM_Placement.Program.GetRandomBits()'</p>
  </blockquote>
  
  <p>Am I missing anything?</p>