string
est un alias pour global::System.String
. C'est simplement du sucre syntaxique. Les deux sont parfaitement interchangeables et il n'y aura aucune différence dans le code compilé.
Personnellement, j'utilise les alias pour les noms de variables, etc., mais j'utilise les noms de type CLR pour les noms dans les API, par exemple:
public int ReadInt32() // Good, language-neutral
public int ReadInt() // Bad, assumes C# meaning of "int"
(Notez que le type de retour n'est pas vraiment un nom - il est codé comme un type dans les métadonnées, il n'y a donc aucune confusion.)