2017-08-23 14 views
0

私は機能的には同等ですが、いくつかのプロパティまたは関数の名前が変更された派生バージョンを作成するC#構造体があります。派生バージョンを悪化させず、プロセスでコードの重複を避けるためには、どうすればよいでしょうか?フィールドの名前が変更された構造体(継承など)のバージョンを作成

具体的には、プロパティX、Y、Z、豊富な関数を持つ構造体Vector3を持ち、プロパティの名前をstructLlaVecにLongitude、Latitude、Altitude、これらの特性は変化した。

これを行うために構造体の実装を複製する以外の方法はありますか?

+0

は、どのような方法あなたが探していますか?自動的に「見て、XはLongtitudeです」と何が決定するのでしょうか? – Sinatr

+3

Cで構造体を継承することはできません –

+0

いいえ - 新しい構造体を一方向に作成する必要があります。 'Vector3'から構造体にシームレスに移行するためにユーザー定義の変換演算子を提供することができます(逆もまた同様です)。しかし、それらの変換は頻繁に行われるとパフォーマンスに影響を与えます。 –

答えて

3

継承を使用せず、カプセル化を使用します。

つまり、持っている構造体をラップする新しい型を作成し、ラップされた構造体のプロパティに新しい関数またはプロパティを委譲します。例えば

struct LlaVec 
{ 
    private readonly Vector3 _v; 

    public LlaVec(Vector3 v) 
    { 
     _v = v; 
    } 

    public int Altitude { get { return _v.Z; }} 
} 
+0

私はそれを考えましたが、パフォーマンスの低下が心配です。そのような不動産はまだインライン化されますか? – user1282931

+0

実用的なソリューションがある場合は、パフォーマンスについて心配してください。 1.それを作る。 2.それを動作させる。 3.正常に動作するようにします。 4.それは速く働かせる。 – Fildor

関連する問題