К примеру есть код
public struct PointD
{
public Double X, Y;
public PointD(Double x, Double y)
{
X = x;
Y = y;
}
}
Как лучше реализовать свойство IsEmpty и как реализуется такое
point = PointD.Empty;
Здравствуйте, SelfCoder, Вы писали:
SC>Как лучше реализовать свойство IsEmpty и как реализуется такое
SC>SC>point = PointD.Empty;
SC>
public struct PointD
{
public static readonly PointD Empty = new PointD();
public Double X, Y;
public PointD(Double x, Double y)
{
X = x;
Y = y;
}
public bool IsEmpty
{
get
{
return (X == 0 && Y == 0);
}
}
}
... << RSDN@Home 1.1.4 @@subversion >>
Здравствуйте, V.Petrovski, Вы писали:
VP> public bool IsEmpty
VP> {
VP> get
VP> {
VP> return (X == 0 && Y == 0);
VP> }
VP> }
VP>}
VP>
а если x=0 y=0 — возможные значения
а как же
point = PointD.Empty;
Можно попробовать так, хотя, возможно, это и не слишком красивый вариант:
public struct PointD
{
private int initFlag;
private double x;
private double y;
private bool IsInitialized
{
get
{
return (initFlag == 0);
}
set
{
initFlag = 1;
}
}
public PointD(double x, double y)
{
IsInitialized = true;
this.x = x;
this.y = y;
}
public bool IsEmpty
{
get
{
return (!IsInitialized);
}
}
public PointD Empty
{
get
{
return new PointD();
}
}
}
Здравствуйте, SelfCoder, Вы писали:
SC>а если x=0 y=0 — возможные значения
Double.NaN — "невозможное" значение.
... << RSDN@Home 1.1.3 stable >>
Здравствуйте, SelfCoder, Вы писали:
SC>а если x=0 y=0 — возможные значения
SC>а как же
SC>SC>point = PointD.Empty;
SC>
Системные Point, Rectangle реализованны именно так. Хотя мне то же это кажеться ошибочным.