List.Add parece estar duplicando entradas. O que há de errado?

Eu tenho uma classe como esta:

public class myClass
{
  public List<myOtherClass> anewlist = new List<myOtherClass>;

  public void addToList(myOtherClass tmp)
  {
    anewList.Add(tmp);
  }

}

Então, eu chamo "addToList" cem vezes, cada uma adicionando um item exclusivo à lista. Testei meus itens para mostrar que, antes de executar o método "addToList", eles são únicos. Eu até coloquei uma linha para testar "tmp" para garantir que era o que eu estava esperando.

No entanto, quando faço isso (digamos que o objeto myClass seja chamado tmpClass):

int i = tmpClass.anewList.Count();
for (int j = 0; j<i; j++)
{
   //write out each member of the list based on index j...
}

Recebo o mesmo item exato e é o último que foi escrito na minha lista. É como se, quando adicionei, estivesse substituindo a lista inteira pelo último item que adicionei.

Socorro? Isso não faz sentido. Eu também tentei List.Insert, onde estou sempre inserindo no final ou no índice 0. Ainda não há dados. Sim, sou duplamente fonte de que minha indexação está correta e, quando faço o teste, indexo cada um dos elementos.

:)

UPDATE: Ok, eu tentei isso e ainda tinha o mesmo problema:

foreach(myOtherClass tmpC in tmpClass.anewList)
{    
    Console.WriteLine(tmpC.theStringInMyClass.ToString());
}

e ainda para cada um dos 100 itens, obtive a mesma saída de string ... Tenho certeza de que estou fazendo algo completamente estúpido, mas ainda não sei o que. Ainda tenho 100% de certeza de que a string certa está sendo passada para começar.

-Adeena

Ok, eu tentei isso e ainda tinha o mesmo problema:

foreach(myOtherClass tmpC in tmpClass.anewList)
{
    Console.WriteLine(tmpC.theStringInMyClass.ToString());
}

e ainda para cada um dos 100 itens, obtive a mesma saída de string ... Tenho certeza de que estou fazendo algo completamente estúpido, mas ainda não sei o que. Ainda tenho 100% de certeza de que a string certa está sendo passada para começar.

-Adeena