2

我想知道是否有某种方法可以用整数声明一个枚举。或者如果有其他选择我可以使用。

例如:

enum panelSizes { 300, 305, 310, 315, ..., 50000}
                  [0]  [1]  [2]  [3]       [940]

我需要为每种尺寸分配某种 ID,因此当用户输入特定宽度时,我必须能够识别相应的 cutSize 女巫存储在不同的数组中。

这是我避免尝试将 excel 文件读入我的程序并进行某种查找以识别某些相关信息的尝试。

请帮忙

提前致谢

4

5 回答 5

3

由于您的方法无论如何都不允许使用名称,因此请使用数组:

 readonly int[] panelSizes = { 300, 305, 310, 315, ..., 50000};

然后,也许,添加一个枚举来索引它:

 enum panelSizeNames { a300, a305, a310, a315, ... , a50000 }  // or better names 

要得到

 int size = panelSizes[panelSizeNames.a315];
于 2013-02-27T13:26:45.620 回答
2

在我看来,您似乎想要使用算法而不是查找来获得正确的切割尺寸。如果您的值像这样是线性的,则不需要字典/枚举/数组。

    int panelSize = 5000;
    int index = (panelSize - 300)/5;

反之亦然

    int index = 940;
    int panelSize = (index * 5) + 300;
于 2013-02-27T13:27:13.490 回答
1

字典怎么样?

        Dictionary<int, int> dic = new Dictionary<int, int>
        {
            { 0, 300 },
            { 1, 305 },
            { 2, 310 }
            ....
        };

请注意,如果键是从 0 到 N 的索引,那么简单的数组也可以...

于 2013-02-27T13:27:08.920 回答
1

使用Dictionary<int,int>你在开始时加载的 id 和 width 作为键和值。

于 2013-02-27T13:27:12.947 回答
0

这是我所做的:

使用结构,我能够将输入数组与填充有大小的数组进行比较,然后将每个匹配大小的位置存储在数组“Identities”中。现在我可以轻松地编写从其他数组在相同位置返回值的方法......(类似于电子表格查找)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PalisadeWorld
{   
//struct to store all the 'identities' of each panel size in an array
struct ID
    {
        public int[] Identities;
        public ID(int[] widths, int rows)
        {
            int[] allWidths = { 300, 305, 310, 315, 320, 325, 330, ..., 5000 };
            int i,j;
            int[] Ids = new int[rows];

            for (i = 0; i < rows; i++)
            {
                for (j = 0; j < 941; j++)
                {
                    if (widths[i] == allWidths[j])
                    {
                        Ids[i] = j;
                        break;
                    }
                }
            }
            this.Identities = Ids;
        }
        public override string ToString()
        {
            string data = String.Format("{0}", this.Identities);
            return data;
        }
    }

class LookUpSheet
{   
    //retrieve calculated widths and number of panels from NewOrder.cs
    public int[] lookUp_Widths {get; set;}
    public int lookUp_Rows { get; set; }

    //Method returning number of pales
    public int[] GetNumPales1()
    {
        int[] all_numPales = { 2, 2, 2, 2, 2, 2, 2, 2, 2, ..."goes on till [941]"...};
        int[] numPales = new int[lookUp_Rows];

        ID select = new ID(lookUp_Widths, lookUp_Rows);

        for (int i = 0; i < lookUp_Rows; i++)
        {
            numPales[i] = all_numPales[select.Identities[i]];
        }

        return numPales;
    }
    //Method returning block sizes (mm)
    public int[] GetBlocks1()
    {
        int[] all_blocks = { 56, 59, 61, 64, 66, 69, 71, 74, "goes on till [941]"...};
        int[] blocks = new int[lookUp_Rows];

        ID select = new ID(lookUp_Widths, lookUp_Rows);

        for (int i = 0; i < lookUp_Rows; i++)
        {
            blocks[i] = all_blocks[select.Identities[i]];
        }
        return blocks;
    }

感谢大家!

于 2013-03-06T12:33:04.977 回答