1

我想转换这个:

class ObjectWithArray
{
    int iSomeValue;
    SubObject[] arrSubs;
}

ObjectWithArray objWithArr;

对此:

class ObjectWithoutArray
{
    int iSomeValue;
    SubObject sub;
}

ObjectWithoutArray[] objNoArr;

其中每个 objNoArr 将具有与 objWithArr 相同的 iSomeValue,但在 objWithArr.arrSubs 中只有一个 SubObject;

想到的第一个想法是简单地循环遍历 objWithArr.arrSubs 并使用当前的 SubObject 创建一个新的 ObjectWithoutArray 并将该新对象添加到一个数组中。但是,我想知道现有框架中是否有任何功能可以做到这一点?


此外,如何简单地将 ObjectWithArray objWithArr 分解为 ObjectWithArray[] arrObjWithArr,其中每个 arrObjectWithArr.arrSubs 将仅包含原始 objWithArr 中的一个子对象?

4

2 回答 2

2

这样的事情可能会奏效。

class ObjectWithArray
{
    int iSomeValue;
    SubObject[] arrSubs;

    ObjectWithArray(){} //whatever you do for constructor


    public ObjectWithoutArray[] toNoArray(){
        ObjectWithoutArray[] retVal = new ObjectWithoutArray[arrSubs.length];

        for(int i = 0; i < arrSubs.length;  i++){
          retVal[i] = new ObjectWithoutArray(this.iSomeValue, arrSubs[i]);
        }

       return retVal;
    }
}

class ObjectWithoutArray
{
    int iSomeValue;
    SubObject sub;

    public ObjectWithoutArray(int iSomeValue, SubObject sub){
       this.iSomeValue = iSomeValue;
       this.sub = sub;
    }
}
于 2012-10-26T23:06:46.167 回答
0

您可以使用 Linq 轻松完成:

class ObjectWithArray
{
    int iSomeValue;
    SubObject[] arrSubs;

    ObjectWithArray() { } //whatever you do for constructor


    public ObjectWithoutArray[] toNoArray()
    {
        ObjectWithoutArray[] retVal = arrSubs.Select(sub => new ObjectWithoutArray(iSomeValue, sub)).ToArray();
        return retVal;
    }
}
于 2012-10-27T00:18:37.653 回答