C #: public nova seqüência de caracteres ToString () VS seqüência de substituição pública ToString ()

Eu quero redefinir a função ToString () em uma das minhas classes.

eu escrevi

public string ToString()

... e está funcionando bem. Mas ReSharper está me dizendo para mudar isso para qualquer um

public new string ToString() 

ou

public override string ToString()

Qual é a diferença? Por que o C # requer algo assim?