0

我正在尝试借助看起来像这样的多维数组来形成一个列表。

[validatorKey][counter]
1453          10
1231          12
6431          7
1246          1
1458          2

但是,我无法应付。顺便说一句,这是我的方法。并且数组大小应该在方法的最后增加。我知道我应该使用 Array.Resize(ref array, 2); 但由于我的数组是多维的,在这种情况下应该是什么合适的方法。

private int AracaAitSeferSayisiDondur(int pValidatorKey)
{
     int iSeferSayisi = 0;
     int[,] iSeferListesi = (int[,])ViewState["SeferListesi"];
     if (iSeferListesi == null)
     iSeferListesi = new int[1,1];

     bool aynisiVarmi = false;

     for (int i = 0; i < iSeferListesi.Length; i++)
     {
        if (iSeferListesi[i,0] == pValidatorKey)
        {
           aynisiVarmi = true;
           iSeferListesi[i,1]++;
           iSeferSayisi = iSeferListesi[i,1]++;
           break;
        }
     }
     if (!aynisiVarmi)
     {
        int arrayLength = iSeferListesi.Length;
        iSeferListesi[arrayLength--, 0] = pValidatorKey;
        iSeferListesi[arrayLength--, 1] = 1;
        //IN THIS PART ARRAY SIZE SHOULD BE INCREASED
        iSeferSayisi = iSeferListesi[arrayLength--, 1];
     }
     ViewState["SeferListesi"] = iSeferListesi;
     return iSeferSayisi;
}
4

2 回答 2

1

Length属性返回数组中元素的总数。

使用GetLength(dimension)方法获取维度的大小:

for (int i = 0; i < iSeferListesi.GetLength(0); i++)

和:

int arrayLength = iSeferListesi.GetLength(0);
于 2012-09-30T12:22:04.663 回答
1

我认为你需要类似的东西:

// not tested
private int AracaAitSeferSayisiDondur(int pValidatorKey)
{
    var iSeferListesi = (Dictionary<int,int>)ViewState["SeferListesi"];
     if (iSeferListesi == null)
        iSeferListesi = new Dictionary<int,int>;

     int iSeferSayisi;

    if ( iSeferListesi.TryGetValue(pValidatorKey, out iSeferSayisi)
    {
       iSeferSayisi += 1;
       iSeferListesi[pValidatorKey] = iSeferSayisi;
       iSeferSayisi += 1;  // is this OK ??
    }
    else
    {
       iSeferSayisi = 1;
       iSeferListesi[pValidatorKey] = iSeferSayisi;
    }

    ViewState["SeferListesi"] = iSeferListesi;
    return iSeferSayisi;
}

iSeferListesi 的双倍增量(源自您的代码)可能不是您想要的,没有它,if/else 逻辑会变得更加简单。

于 2012-09-30T12:47:51.830 回答