Should my helper methods use Static classes in C#
<p>I have a number of helper methods within helper classes. In my company I see that others use these helper methods as below:</p>

<pre><code>var abc = new HelperClass()
var def = abc.doAction("ghi");
</code></pre>

<p>Is there a benefit to having these as non-static classes and having to create an instance each time around? Would it not be better to declare the helper class as static and do the following:</p>

<pre><code>var def = HelperClass.doAction("ghi");
</code></pre>

<p>If I do the latter then do I need to declare both the helper class and the doAction method as static?</p>

<p>Here's an example of some code I use:</p>

<pre><code>namespace Power.Storage.Helpers
{
    public class SimplerAES
    {
        private static byte[] key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 };
        private static byte[] vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 221, 112, 79, 32, 114, 156 };
        private ICryptoTransform encryptor, decryptor;
        private UTF8Encoding encoder;

        public SimplerAES()
        {
            RijndaelManaged rm = new RijndaelManaged();
            encryptor = rm.CreateEncryptor(key, vector);
            decryptor = rm.CreateDecryptor(key, vector);
            encoder = new UTF8Encoding();
        }

       ...

        public byte[] Encrypt(byte[] buffer)
        {
            MemoryStream encryptStream = new MemoryStream();
            using (CryptoStream cs = new CryptoStream(encryptStream, encryptor, CryptoStreamMode.Write))
            {
                cs.Write(buffer, 0, buffer.Length);
            }
            return encryptStream.ToArray();
        }

        public byte[] Decrypt(byte[] buffer)
        {
            MemoryStream decryptStream = new MemoryStream();
            using (CryptoStream cs = new CryptoStream(decryptStream, decryptor, CryptoStreamMode.Write))
            {
                cs.Write(buffer, 0, buffer.Length);
            }
            return decryptStream.ToArray();
        }
    }
}
</code></pre>

<p>Would it be correct to say this should not be static as it has a constructor that instantiates other classes.</p>
