私はC#を教えてきましたが、私はカスタムデータ型の使い方を学んでいます。私が書いているプログラムは、一対の座標ペアを生成します。私は、各セット(x1、x2、y1、y2)を保持するデータ型を、そのセットに関連する他のいくつかの変数と一緒に作成することは理想的だと考えました。しかし、プログラムは複数の座標セット(異なるカテゴリ)の配列を生成するので、物事を追跡することはまだ困難です。私はそれをさらにカテゴリに分類し、それぞれのカテゴリを第3のレベルの第3のタイプとして配置し、それを第3レベルとしてリストに入れました。C#ランタイムでのカスタムデータ型の復帰の変更
アイテムの各「ティア」には、そのティア固有のプロパティがいくつかありますが、このロードブロックの前では、階層間でデータを交換する必要はありませんでした。問題は、オフセットを使用して座標ペアのセットを変更する必要があり、各オフセットが親データタイプに固有であることを認識したときに発生しました。オフセットをデータ型のクラス自体の外側から取得したものではなく、データとオフセットを返すようにget {}コードを変更できます(「スキュー」と呼ばれます)。親データ型(公的な静的なものでも)に値を設定しようとしましたが、何らかの理由で子がそれを読み取れませんでした。
私がこの作業を行う方法を知っている唯一の方法は、各座標セットでプロパティを設定することですが、何千ものあるかもしれません。この値は親に固有ですが、すべての子がそれを使用する必要があるため、他の多くの計算が行われるため、無駄に見えます。私の他の考えは、オフセット配列を維持し、値が取り出される場所に追加することでした。しかし、それはデータ型そのものの中にそれを含めるほどきれいではないので、混乱につながります。これを達成する別の方法がありますか?ここで
は、コードの一部がどのように見えるかです:あなたのコードで
public class SlotData
{
private double _x1, _x2, _y1, _y2;
public double X1
{
get { return _x1; }
set { _x1 = value; }
}
public double X2
{
get { return _x2; }
set { _x2 = value; }
}
public double Y1
{
get { return _y1; }
set { _y1 = value; }
}
public double Y2
{
get { return _y2; }
set { _y2 = value; }
}
}
public class ClientInfo
{
public static double _skewX, _skewY;
public SlotGroup1 Group1
{
get;
set;
}
public SlotGroup2 Group2
{
get;
set;
}
public SlotGroup3 Group3
{
get;
set;
}
}
public class SlotGroup1
{
public SlotData Slot1
{
get;
set;
}
public SlotData Slot2
{
get;
set;
}
}
ああ、問題は私が実際にそれを子供にしていないことです。 Intellisenseはこれを階層構造として表示しているため、これは私がやっていることだと思っていました。しかし、スコープ内にあるものにアクセスできない場合は、間違って実装している可能性があります。私は暗黙のget/setを積み重ねる方法も好きです。私がやっていたことよりもうまく見えます。これは私が想像しているのとまったく同じように機能し、他のデータのCPU時間が増えるようになります。お手伝いいただきありがとうございます。 – Zatronium