如何在c#中声明int表的列表?

如何在c#中声明int表的列表?,c#,list,declaration,C#,List,Declaration,我的声明如下: IList<int[]> populacja = new List<int[]>(); IList popularcja=新列表(); 但我还想声明int table的一个常量大小。所以我想要这样的东西 IList<int[2]> populacja = new List<int[2]>(); IList popularcja=新列表(); 怎么做?制作int表列表的好方法是什么?如果确保popularja始终是int[2]

我的声明如下:

IList<int[]> populacja = new List<int[]>();
IList popularcja=新列表();
但我还想声明int table的一个常量大小。所以我想要这样的东西

IList<int[2]> populacja = new List<int[2]>();
IList popularcja=新列表();

怎么做?制作int表列表的好方法是什么?

如果确保
popularja
始终是int[2]对您来说很重要,您可以将其包装在一个类中,然后制作该类的列表。内置选项包括,例如:

IList<Tuple<int,int>> populacja = new List<Tuple<int,int>>();
IList popularcja=新列表();

如果确保
popularja
始终为int[2]对您很重要,您可以将其包装在类中,然后列出该类。内置选项包括,例如:

IList<Tuple<int,int>> populacja = new List<Tuple<int,int>>();
IList popularcja=新列表();
仅供参考

无法在IList中声明int[2]的原因是它需要一个类型。在本例中,类型是int(int[])的数组。T不在乎长度或类似的东西。如果您确实想使用int[],则需要执行以下操作--

IList popularcja=新列表();
popularja.Add(新整数[2]);//大小为2的空int数组
popularja.Add(新[]{32113212});//大小为2的非空int数组
每次添加一个新的int数组时,您都需要显式地将其实例化为大小为2的数组,因为没有约束。

仅供参考

无法在IList中声明int[2]的原因是它需要一个类型。在本例中,类型是int(int[])的数组。T不在乎长度或类似的东西。如果您确实想使用int[],则需要执行以下操作--

IList popularcja=新列表();
popularja.Add(新整数[2]);//大小为2的空int数组
popularja.Add(新[]{32113212});//大小为2的非空int数组


每次添加一个新的int数组时,都需要显式地用2的大小实例化它,因为没有约束。

只需执行int[]popularja=new int[2];您还可以将其设置为
IList
,具体取决于您的needs@elgonzo但它将第一个列表限制为两个元素。我想用等长表制作动态列表。他是指int[][2]?是的,我想@moarboilerplate正确理解了这个问题…:)只需执行int[]populicja=新int[2];您还可以将其设置为
IList
,具体取决于您的needs@elgonzo但它将第一个列表限制为两个元素。我想用等长表制作动态列表。他是指int[][2]?是的,我想@moarboilerplate正确理解了这个问题…:)popularja始终具有int[2]类型的元素,但它仅限于tuple的功能。当我想做int[1243]的时候,我该怎么做?你是说你可能想要一个int[2]和int[1243]?在这一点上,我建议您创建一个类,它是int[1243]的包装器,并使用它而不是Tuple。如果您发现自己需要很多不同大小的东西,那么我建议您不要真正的列表,而是一个好的老式int[]。列表意味着x是某种类型的一级对象,通常映射到某个实体。很多任意长度的数组感觉起来有点违背OOP原则,虽然我不能确定,因为这不是我的问题域。好的,谢谢,这是我的解决方案,但它看起来效率不高。无论如何,自从.NET Framework 1.1以来,我从未使用过二维数组或任何东西来保存像C#一样的int…正如Gwlosa所提到的,您可能需要以一种不同的、面向对象的方式来解决这个问题。Popularcja始终具有int[2]类型的元素,但它仅限于元组的功能。当我想做int[1243]的时候,我该怎么做?你是说你可能想要一个int[2]和int[1243]?在这一点上,我建议您创建一个类,它是int[1243]的包装器,并使用它而不是Tuple。如果您发现自己需要很多不同大小的东西,那么我建议您不要真正的列表,而是一个好的老式int[]。列表意味着x是某种类型的一级对象,通常映射到某个实体。很多任意长度的数组感觉起来有点违背OOP原则,虽然我不能确定,因为这不是我的问题域。好的,谢谢,这是我的解决方案,但它看起来效率不高。无论如何,自从.NET Framework 1.1以来,我从未使用过二维数组或任何东西来保存像C#一样的整数……正如Gwlosa所提到的,您可能需要以一种不同的面向对象的方式来解决这个问题。但是在您的解决方案中,我可以添加一个新的整数[4]。我说得对吗?我想使大小保持不变。正确,您需要自己创建约束。popularja是一个数组列表,该列表不知道每个数组的大小。你有责任将约束落实到位。最好的方法是将popularja封装在自己的类中,并创建一个Add方法来强制int[2]约束。gwlosa的解决方案很好,但我想知道是否有更好的方法来有效地解决这个问题。这取决于您如何使用popularja。有很多方法可以提高性能,但我不可能在不知道您如何使用它的情况下给您任何建议。例如,如果您总是在列表上迭代,那么您可以做的事情就不多了,因为它总是o(n)。但是,如果您正在进行查找,那么也许您可以使用某种字典/哈希映射。但是在您的解决方案中,我可以添加一个新的int[4]。我说得对吗?我想使大小保持不变。正确,您需要自己创建约束。popularja是一个数组列表,该列表不知道每个数组的大小。你有责任将约束落实到位。最好的方法是将popularja封装在自己的类中,并创建一个Add方法来强制int[2]约束