class KvadrUr
{
public double a, b, c, D, x1, x2;
public void CalcD()
{
D = b*b - 4*a*c;
}
public void Calc()
{
double d = Math.Sqrt(D);
x1 = (-b + d)/(2*a);
x2 = (-b - d)/(2*a);
}
}
KvadrUr ur = new KvadrUr();
ur.a = 1;
ur.b = 2;
ur.c = -3;
ur.CalcD();
ur.Calc();
Console.WriteLine(ur.x1 + " " + ur.x2); // правильный ответ
ur.c = -4;
Console.WriteLine(ur.x1 + " " + ur.x2); // неправильный ответ - теперь дискриминант неверный!
Если сделать переменную D приватной (и вызывать CalcD внутри Calc), то это эта ошибка возникнуть не может.
То есть, ограничение доступа к членам класса помогает уменьшать вероятность ошибки.