C#:具有两种类型项的堆栈

本文关键字:堆栈 类型 两种 | 更新日期: 2023-09-27 17:55:39

我想用两种不同的类型制作堆栈

所以我尝试写这个但给出错误:

Stack<[string,int]> S = new Stack<[string,int]>();
S.Push(["aaa",0]);

我以前尝试过这种方式:

public class SItem{
    public string x;
    public int y;
    public SItem(string text,int index){
        this.x = text;
        this.y = index;
    }
}
Stack<SItem> S = new Stack<SItem>();
SItem Start = new SItem("aaa",0);
S.Push(Start);

但我希望它像我以前写的那样非常简单

知道吗?

C#:具有两种类型项的堆栈

你可以考虑元组:

var stack = new Stack<Tuple<string, int>>();
stack.Push(Tuple.Create("string", 0));
var item = stack.Pop();

它消除了编写自定义类的需要,但正如@AlexeiLevenkov所评论的那样,缺点是使代码的可读性降低。

您可以使用

KeyValuePair或Tuple(取决于您的.Net版本)

Stack<KeyValuePair<string, int>> stack = new Stack<KeyValuePair<string, int>>();
stack.Push(new KeyValuePair<string, int>("string", 5));

另一种方法是使用 KeyValuePair:

Stack<KeyValuePair<string, int>> stack;