Compte tenu de cette classe ...compilateur mises en œuvre dans immutabilité .Net
public class Test
{
private long _id;
public Test(long id)
{
_id = id;
}
}
Est-ce que le compilateur .Net compiler en fait comme ...
public class Test
{
private readonly long _id;
public Test(long id)
{
_id = id;
}
}
En d'autres termes, faut-il comprendre que _id est uniquement défini à partir du constructeur et est, par conséquent, en lecture seule?
Ceci est légèrement trompeur et ne répond pas vraiment à la question. Considérez la situation "opposée" où vous avez un champ 'readonly' privé: Le compilateur * sait * si vous essayez de définir ce champ de n'importe où sauf la déclaration/constructeur, mais il n'y a rien pour vous empêcher de le définir ailleurs en utilisant la réflexion . Si le compilateur peut valider l'utilisation des champs 'private readonly', il n'y a pas de raison (théorique) de ne pas vérifier l'utilisation des champs non-' readeadly'. – LukeH