有没有办法使用C#中2D数组的[0]索引中的原始值将一维数组扩展为2D数组?

时间:2015-08-06 09:41:26

标签: c# arrays

我有一个带有类别名称的数组,但现在我需要为每个类别分配几个计数器。 有没有办法在C#中将我的1D阵列扩展为2D阵列?

感谢您的帮助!

编辑:

PerformanceCounterCategory[] categories;
        categories = PerformanceCounterCategory.GetCategories();

        string[] categoryNames = new string[categories.Length];
        string[] categoryNames_en = new string[categories.Length];

        for (int objX = 0; objX < categories.Length; objX++)
        {
            categoryNames[objX] = categories[objX].CategoryName;
        }
        Array.Sort(categoryNames);

        for (int objX = 0; objX < categories.Length; objX++)
        {
            Console.WriteLine("{0,4} - {1}", objX + 1, categoryNames[objX]);
        }

我的数组categoryNames包含所有类别的名称,但在每个类别中都有一些计数器,我想以某种方式分配给他们的类别...

2 个答案:

答案 0 :(得分:0)

不幸的是,您无法使用Array.Copy,因为源和目标数组的维度不同。

此外,您无法在C#中扩展数组,因为它们是使用固定大小初始化的。

你可以做的是创建一个带有第二个dimonesion的新数组,然后复制这些值并将第二个维度设置为默认值。

void Main()
{
    int[] sourceCollection = new [] {1,2,3,4,5,6,7} ;

    var result = CopyArrayValues(sourceCollection, 2);
    result.Dump();
}
//create a new 2d array
T[,] CopyArrayValues<T>(T[] DataSource, int SecondLength)
{
    //Initialize the new array
    var Target = new T[DataSource.Length, SecondLength];
    //Copy values over
    for (int i = 0; i < DataSource.Length; i++)
    {
        Target[i, 0] = DataSource[i];
    }

    return Target;
}

输出:

enter image description here

答案 1 :(得分:0)

如果你有阵列数组,你可以按照这种模式做点什么:

var c = Date.parse(b);