eh si perchè le stringhe sono in sola lettura.l'ho fatto alla carlona giusto per darti un idea.
prova a mettere stringfinale.Insert(j,string2[i]) al posto di quella riga in cui ti da errore.
per capirci trasforma cosi il ciclo for

for (int j = 0; j < string1.Length; j++)
{
if (string2[i] == string1[j])
stringfinale.Insert(j,string2[i]);
}