0

私の構造体クラス:

public struct PinAndRadius
{
    public string pinID { get; set; }
    public string radiusID { get; set; }

    public string getPinID()
    {
        return pinID;
    }

    public string getRadiusID()
    {
        return radiusID;
    }
}

問題のあるメソッド:

void mapArea_VE_PinDragged(double latitude, double longitude, object id)
{
    foreach (var pin in pinRadiusCollection)
    {
        string ID = id.ToString();
        //string newID = ID.Substring(0, 18);
        if (!pin.Key.pinID.Equals(ID))
        {
            continue;
        }
        else if (pin.Key.pinID.Equals(ID))
        {
            var newLoc = createNewSearchLocation(latitude, longitude);
            mapArea.VE_DeleteRadius(pin.Key.radiusID);
            drawPoly(newLoc, pin.Value.xar_Radius);
            pin.Key.radiusID = pollyID;
            break;
        }
    }
}

問題は、pin.key.radiusIDpollyID に設定しようとすると、次のエラーが表示されることです。

変数ではないため、「System.Collections.Generic.KeyValuePair.Key」の戻り値を変更できません...

何か案は?

4

4 に答える 4

0

構造体の定義をクラスに変更しただけです。

于 2013-01-07T09:13:38.917 に答える
0

見た目では、あなたは;pinRadiusCollectionによってキー設定された一般的な辞書です。PinAndRadius発生するエラーは、そのオブジェクトがディクショナリのキーとして使用されているため、そのオブジェクトを変更できないことを通知することです。

ピンが変更可能であると想定される場合は、ピンの保存方法を再検討する必要があります。

于 2012-12-21T14:58:22.913 に答える
0

.net の構造は値型です。PinAndRadiusこれは、 usingへの参照を取得できないことを意味しますpin.Keypin.Keyタイプ のコピーを取得します PinAndRadius。次に、このコピーにアクセスできず、コンパイラがこれについて通知します。C++ の用語では、左辺値ではありません。

作成する場合は、struct常に不変にしてください。可変構造体は悪です。

この問題を解決する最も簡単な方法は、PinAndRadiusasを作成することclassです。

于 2012-12-21T14:54:19.130 に答える