Esempio n. 1
0
        /// <summary>
        /// Gets a pseudorandom <see langword="char"/>.
        /// </summary>
        /// <param name="charKind">Types of the character.</param>
        /// <returns>A random char value.</returns>
        public char NextChar(RandomCharKind charKind)
        {
            const string LettersUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            const string LettersLower = "abcdefghijklmnopqrstuvwxyz";
            const string Digits       = "0123456789";
            const string Symbols      = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";

            Span <RandomCharKind> flags = stackalloc RandomCharKind[4];
            int flagCount = 0;

            if (HasFlag(charKind, RandomCharKind.Digit))
            {
                flags[flagCount++] = RandomCharKind.Digit;
            }
            if (HasFlag(charKind, RandomCharKind.Upper))
            {
                flags[flagCount++] = RandomCharKind.Upper;
            }
            if (HasFlag(charKind, RandomCharKind.Lower))
            {
                flags[flagCount++] = RandomCharKind.Lower;
            }
            if (HasFlag(charKind, RandomCharKind.Symbol))
            {
                flags[flagCount++] = RandomCharKind.Symbol;
            }

            RandomCharKind flag = flags[NextInt(0, flagCount - 1)];

            return(flag switch
            {
                RandomCharKind.Upper => LettersUpper[NextInt(0, LettersUpper.Length - 1)],
                RandomCharKind.Lower => LettersLower[NextInt(0, LettersLower.Length - 1)],
                RandomCharKind.Digit => Digits[NextInt(0, Digits.Length - 1)],
                RandomCharKind.Symbol => Symbols[NextInt(0, Symbols.Length - 1)],
                _ => default,
 public char NextChar(RandomCharKind randomChar)
 {
     return(default);