Retornar textos vindos de uma List em uma nova List C#


a dúvida é o seguinte: eu estou fazendo uma classe para comparar valores em uma lista, e preciso que esses valores sejam armazenados em outra lista, para que eu possa acessar o valor que não bateu com a comparação, e também o index dele. O meu código atualmente está assim:

class Compar
    {
        List<uint> a = new List<uint> { 12, 45, 65, 12 };
        List<string> b = new List<string>();
        uint expected = 12; 
        public List<string> Igual(List<uint> a)
        {
            for (int i = 0; i < a.Count; i++)
            {
                if (a(i) != expected)
                {
                    b(i) = $"Valor {a(i)} diferente do esperado na posicao {i}";
                }
            }
            return b;
        }
    }

Classe main:

  class Program
    {

        static void Main(string() args)
        {
            List<uint> Lista = new List<uint> { 12, 45, 65, 12 };
            Compar a = new Compar();
            Console.WriteLine(a.Igual(Lista));
        }
    }

O erro é o seguinte: index was out of range.

Podem me dar uma luz de qual seria a solução?

Obrigado!