使用不同类型定义二维动态数组

时间:2009-12-21 10:56:03

标签: c# .net windows

我想创建不同类型的二维数组,就像我可以添加到该数组中的两个值,其中一个是controlname,第二个是boolean值。

8 个答案:

答案 0 :(得分:10)

你做不到。相反,您应该创建一个包含这两个属性的类,然后您可以创建该类型的数组:

public class MyClass
{
    public string ControlName {get;set;}
    public bool MyBooleanValue {get;set;}
}

public MyClass[] myValues=new MyClass[numberOfItems];

或者,正如Anders所说,如果其中一个属性用于执行查找,请使用字典。

答案 1 :(得分:5)

字典将适用于您当时尝试做的事情。

Dictionary<string, bool> controllerDictionary = new Dictionary<string, bool>();

设置值

if (controllerDictionary.ContainsKey(controllerName))
    controllerDictionary[controllerName] = newValue;
else
    controllerDictionary.Add(controllerName, newValue);

获取值

if (controllerDictionary.ContainsKey(controllerName))
    return controllerDictionary[controllerName];
else
    //return default or throw exception

答案 2 :(得分:4)

你不能用数组。

也许您应该使用Dictionary

Dictionary<string,bool>的通用词典似乎是适合您描述的内容。

答案 3 :(得分:1)

如果要按控件名称查找/设置布尔值,可以使用Dictionary<string, bool>

答案 4 :(得分:1)

使用字典&lt; string,bool&gt;。 如果由于某种原因,你真的需要一个数组,请尝试object [,]并将其值转换为你想要的类型。

答案 5 :(得分:1)

另一种方法是创建一个类型为object的数组,然后将其添加到arraylist中。 以下是一些示例代码:

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

    namespace Collections
    {
        class Program
        {
            static void Main(string[] args)
            {
                ArrayList ar = new ArrayList();
                object[] o = new object[3];
                // Add 10 items to arraylist
                for (int i = 0; i < 10; i++)
                {
                    // Create some sample data to add to array of objects of different types.
                    Random r = new Random();
                    o[0] = r.Next(1, 100);
                    o[1] = "a" + r.Next(1,100).ToString();
                    o[2] = r.Next(1,100);
                    ar.Add(o);
                }
            }
        }
    }

答案 6 :(得分:1)

这取决于您希望如何使用阵列。您想通过键或索引查找值吗?科纳米曼建议上课。但是有两种类型的类只不过是Dictionary<type of key, type of value>。 如果要通过键获取值,可以使用字典。 像这样:

Dictionary<string, int> MyDict = new Dictionary<string, int>();
MyDict.Add("Brutus", 16);
MyDict.Add("Angelina", 22);
int AgeOfAngelina = MyDict["Angelina"];

现在字典的缺点是,你不能迭代它。订单未确定。你不能用MyDict[0].Value来获得布鲁图斯的年龄(16岁)。

您可以使用

List<KeyValuePair<string, int>> MyList = new List<KeyValuePair<string, int>>();

迭代两个不同类型的2D数组,因为List支持迭代。但话说回来,你无法通过MyList["Angelina"].Value获得安吉丽娜的年龄,但你必须使用MyList[0].Value

但你也可以使用数据表。但是,使用其列初始化表需要更多的工作。

答案 7 :(得分:0)

“多维数组是一个数组: 所有维度中的所有元素都具有相同的类型“