呵呵~还是以前写的,没有什么技术含量,但还是看到有很多人需要,所以发一下.别见笑哈 ^o^~希望有人能用到
如果使用StringBuilder的话可能会有更好的性能,需要的就自己改一下吧~
using System;namespace Yes1000.Str
{
    public class RandStr
    {
        private string framerStr = null;
        private string numStr = "0123456789";
        private string upperStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private string lowerStr = "abcdefghijklmnopqrstuvwxyz";
        private string Str = @"`-=[];'\,./~!@#$%^&*()_+{}:""|<>?";
        private static Random myRandom = new Random();        /// <summary>
        /// 如未提供参数构造,则默认由数字+小写字母构成
        /// </summary>
        public RandStr()
        {
            framerStr = numStr + lowerStr;
        }        /// <summary>
        /// 构造函数,可指定构成的字符
        /// </summary>
        /// <param name="useNum">是否使用数字</param>
        /// <param name="useUpper">是否使用大写字母</param>
        /// <param name="useLower">是否使用小写字母</param>
        /// <param name="useMark">是否使用符号</param>
        public RandStr(bool useNum,bool useUpper,bool useLower,bool useMark)
        {
            // 如果试图构造不包含任何组成字符的类,则抛出异常
            if (!useNum && !useUpper && !useLower && !useMark)
            {
                throw new ArgumentException("必须至少使用一种构成字符!");
            }
            else
            {
                if (useNum)
                    framerStr += numStr;
                if (useUpper)
                    framerStr += upperStr;
                if (useLower)
                    framerStr += lowerStr;
                if (useMark)
                    framerStr += Str;
            }
        }        /// <summary>
        /// 使用自定义的组成字符构造
        /// </summary>
        /// <param name="userStr">自定义字符</param>
        public RandStr(string userStr)
        {
            // 如果试图用空字符串构造类,则抛出异常
            if (userStr.Length == 0)
            {
                throw new ArgumentException("请至少使用一个字符!");
            }
            else
            {
                framerStr = userStr;
            }
        }        /// <summary>
        /// 取得一个随机字符串
        /// </summary>
        /// <param name="length">取得随机字符串的长度</param>
        /// <returns>返回的随机字符串</returns>
        public string GetRandStr(int length)
        {
            // 获取的长度不能为0个或者负数个
            if (length < 1)
            {
                throw new ArgumentException("字符长度不能为0或者负数!");
            }
            else
            {
                // 如果只是获取少量随机字符串,
                // 这样没有问题.
                // 但如果需要短时间获取大量随机字符串的话,
                // 这样可能性能不高.
                // 可以改用StringBuilder类来提高性能,
                // 需要的可以自己改一下 ^o^
                string tempStr = null;
                for (int i = 0; i < length; i++)
                {
                    int randNum = myRandom.Next(framerStr.Length);
                    tempStr += framerStr[randNum];
                }
                return tempStr;
            }
        }
    }
}