このようなことをしたい場合は、を上書きできますインデクサープロパティですが、ではなく、TemporaryPoints
プロパティを作成する必要があります。あなたは、あなたが特定のインデックスにのみ値を設定することを可能にするインターフェースを作るべき「プロパティのインデクサプロパティ」を上書きすることはできませんので
public class MyRectangle
{
private PointF[] _temporaryPoints = new PointF[4];
protected PointF[] _savedPoints = new PointF[4];
// get TemporaryPoint by it's index
public PointF TemporaryPoint(int idx)
{
return (idx < _temporaryPoints.Length ? _temporaryPoints[idx] : default(PointF));
}
// set TemporaryPoint value at index idx
public void SetTemporaryPoint(int idx, PointF value)
{
if(idx < _temporaryPoints.Length) _temporaryPoints[idx] = value;
}
// get SavedPoint by it's index
public PointF SavedPoint(int idx)
{
return (idx < _savedPoints.Length ? _savedPoints[idx] : default(PointF));
}
// set SavedPoint value at index idx
public void SetSavedPoint(int idx, PointF value)
{
if(idx < _savedPoints.Length) _savedPoints[idx] = value;
}
//How to do something like this ?
protected PointF this[int idx]
{
get
{
return SavedPoint(idx);
}
set
{
SetSavedPoint(i, value);
SetTemporaryPoint(i, value);
}
}
}
:これらは、あなたはこのようなものを作成するために組み合わせることができます。 そのため、この方法があります:SetTemporaryPoint(int idx, PointF value)
。 は、すべての後にあなたがしている欲しかったとして、それはほぼ同じ使用することができます。
SetSavedPoint(0, new PointF(1,1)); // SavedPoints = [1;1] TemporaryPoints = [1;1]
SetTemporaryPoint(0, new PointF(4,4)); // SavedPoints = [1;1] TemporaryPoints = [4;4]
SetSavedPoint(0, TemporaryPoint(0)); // SavedPoints = [4;4] TemporaryPoints = [4;4]
しかし、あなたは唯一のthis[]
インデクサプロパティを使用してに本当にしている場合。その後
public enum POINTS_STORAGE { TEMPORARY = 0, SAVED = 1 };
あなたでthis[]
インデクサプロパティ:
public PointF this[POINTS_STORAGE s, int idx]
{
get
{
if(s == POINTS_STORAGE.TEMPORARY)
return _temporaryPoints[idx];
else
return _savedPoints[idx];
}
set
{
if(s == POINTS_STORAGE.TEMPORARY)
_temporaryPoints[idx] = value;
else
_savedPoints[idx] = value;
}
}
次にあなたが好きそれを使用することができます:あなたは、いくつか列挙することができます[i]の値を=あなたはTemporaryPointsを設定している
meRectangleReference[POINTS_STORAGE.SAVED, 0] = new PointF(1, 1); // SavedPoints = [1;1] TemporaryPoints = [1;1]
meRectangleReference[POINTS_STORAGE.TEMPORARY, 0] = new PointF(4,4); // SavedPoints = [1;1] TemporaryPoints = [4;4]
meRectangleReference[POINTS_STORAGE.SAVED, 0] = meRectangleReference[POINTS_STORAGE.TEMPORARY, 0]; // SavedPoints = [4;4] TemporaryPoints = [4;4]
を。同様に – CodeConstruct