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);
但我希望它像我以前写的那样非常简单
知道吗?
你可以考虑元组:
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;