是否有类似 List 的东西? (多维通用列表)

发布于 2024-09-05 05:42:44 字数 139 浏览 7 评论 0 原文

我需要类似于 List 的内容。 List 一次仅支持一种类型,Dictionary 一次仅支持两种。有没有一种干净的方法可以执行上述操作(多维通用列表/集合)?

I need something similar to List<String, Int32, Int32>. List only supports one type at a time, and Dictionary only two at a time. Is there a clean way to do something like the above (a multidimensional generic list/collection)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

吐个泡泡 2024-09-12 05:42:44

最好的方法是为其创建一个容器,即一个类,

public class Container
{
    public int int1 { get; set; }
    public int int2 { get; set; }
    public string string1 { get; set; }
}

然后在您需要它的代码中

List<Container> myContainer = new List<Container>();

Best way is to create a container for it ie a class

public class Container
{
    public int int1 { get; set; }
    public int int2 { get; set; }
    public string string1 { get; set; }
}

then in the code where you need it

List<Container> myContainer = new List<Container>();
内心荒芜 2024-09-12 05:42:44

在 .NET 4 中,您可以使用 List>

In .NET 4 you can use List<Tuple<String, Int32, Int32>>.

年少掌心 2024-09-12 05:42:44

好吧,在 C# 3.0 之前您无法执行此操作,如果您可以使用 C# 4.0(如其他答案中所述),请使用元组。

但是,在 C# 3.0 中 - 创建一个不可变结构并将所有类型的实例包装在该结构中,并将结构类型作为泛型类型参数传递给列表。

public struct Container
{
    public string String1 { get; private set; }
    public int Int1 { get; private set; }
    public int Int2 { get; private set; }

    public Container(string string1, int int1, int int2)
        : this()
    {
        this.String1 = string1;
        this.Int1 = int1;
        this.Int2 = int2;
    }
}

//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));

如果您好奇为什么要创建不可变结构 - 在此处查看

Well, you can't do this til C# 3.0, use Tuples if you can use C# 4.0 as mentioned in other answers.

However In C# 3.0 - create an Immutable structure and wrap all types' insances within the structure and pass the structure type as generic type argument to your list.

public struct Container
{
    public string String1 { get; private set; }
    public int Int1 { get; private set; }
    public int Int2 { get; private set; }

    public Container(string string1, int int1, int int2)
        : this()
    {
        this.String1 = string1;
        this.Int1 = int1;
        this.Int2 = int2;
    }
}

//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));

If you're curious why create immutable structs - checkout here.

这个俗人 2024-09-12 05:42:44

根据您的评论,听起来您需要一个结构体,其中两个整数存储在带有字符串键的字典中。

struct MyStruct
{
   int MyFirstInt;
   int MySecondInt;
}

...

Dictionary<string, MyStruct> dictionary = ...

Based on your comment, it sounds like you need a struct with two integers stored in a dictionary with a string key.

struct MyStruct
{
   int MyFirstInt;
   int MySecondInt;
}

...

Dictionary<string, MyStruct> dictionary = ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文