GOT C# 6
Na sequência do que tem sido feito nos números anteriores, vamos começar por fornecer as respostas às questões do item anterior. Relativamente ao primeiro exemplo, não há qualquer problema com o código pois em C# o acesso é definido a nível da classe e não ao nível do objecto. Devido a isto, é possível termos um objecto a aceder aos campos privados de outro objecto (se bem que esta não seja uma estratégia muito boa!).
Por outro lado, o segundo programa contém um erro relacionado com o facto de estarmos a aceder a um membro protegido da classe Class1. Isto deve-se a uma regra que diz (mais ou menos) o seguinte: o acesso a um membro protegido (protected) fora do texto da classe deve ser sempre feito através de uma classe derivada.
Para esta semana, interessa saber qual o resultado proveniente do seguinte código:
struct Point
{
private int _x;
private int _y;
public int X
{
get{ return _x; }
set{ _x = value;}
}
public int Y
{
get{ return _y; }
set{_y = value; }
}
}
struct Rectangle
{
private Point _p1;
private Point _p2;
public Point P1
{
get { return _p1; }
set { _p1 = value; }
}
public Point P2
{
get { return _p2; }
set { _p2 = value; }
}
}
class Program{
static void Main( string[] args )
{
Point p1; p1.X = p1.Y = 1;
Rectangle rect;
rect.P1 = p1;
rect.P2.X = 2;
rect.P2.Y = 2;
}
}
Até para a semana!