Eventuali duplicati:
Why are private fields private to the type, not the instance?Perché è possibile chiamare un metodo/variabile CSharp protetto o privato?
Si consideri la seguente classe:
public class Test
{
protected string name;
private DateTime dateTime;
public Test(string name)
{
this.name = name;
this.dateTime = DateTime.Now;
}
public Test(Test otherObject)
{
this.name = otherObject.name;
this.dateTime = otherObject.GetDateTime();
}
private DateTime GetDateTime()
{
return dateTime;
}
public override string ToString()
{
return name + ":" + dateTime.Ticks.ToString();
}
}
Nel mio costruttore Chiamo privato o protetta roba del otherObject
. Perché è possibile? Ho sempre pensato che privato fosse realmente privato (implicando solo che l'oggetto potesse chiamare quel metodo/variabile) o protetto (accessibile solo da sovraccarichi).
Perché e quando dovrei usare una funzione come questa?
C'è qualche principio OO/principio che mi manca?
Perché si è ottenuto un voto negativo? Sembra una buona domanda con un buon esempio di codice (che devo ammettere non ho ancora testato, ma suppongo che fa ciò che si sostiene? – Chris
anche http://stackoverflow.com/questions/4244818/why-can-private-member- variabile-essere-cambiato-by-classe-istanza – AakashM
e http://stackoverflow.com/questions/2090285/c-private-members-visibility – AakashM