如何定义一个 Listint,string 这样的 List ?
生活随笔
收集整理的這篇文章主要介紹了
如何定义一个 Listint,string 这样的 List ?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
咨詢區
Benny Ae
我在想為什么 C# 中沒有內置帶兩列的 List 結構,如:
List<int,string>?mylist=?new?List<int,string>();回答區
newfurniturey
雖然沒有內置,但還是有其他解決方案的,大體上有四種。
使用 Tuple<int, string>
如果你用的是 C#7 之前的版本,而且還要堅持用 List 和 key-value 結構的話,完全可以使用 Tuple<int,string> ,參考如下代碼:
static?void?Main(string[]?args){List<Tuple<int,?string>>?mylist?=?new?List<Tuple<int,?string>>();//?add?an?itemmylist.Add(new?Tuple<int,?string>(someInt,?someString));}ValueTuple
如果你用的是 C#7 以后的版本,可以使用新的結構 ValueTuple,它的結構和你的所想象的基本能保持一致。
static?void?Main(string[]?args){List<(int,?string)>?mylist?=?new?List<(int,?string)>();}值得一提的是,在 .NETFramework 4.7+ 和 .NET Core 中是內置的,它是引用類型 Tuple 的值類型版本,也比 Tuple 更加靈活,比如下面這樣。
static?void?Main(string[]?args){var?mylist?=?new?List<(int?myInt,?string?myString)>();}使用 Dictionary<int,string>
如果你關注的只是鍵值對,完全可以用 Dictionary 替代 List。
static?void?Main(string[]?args){Dictionary<int,?string>?mydict?=?new?Dictionary<int,?string>();//?add?an?itemmydict.Add(someInt,?someString);}使用 struct
可以將 key-value 封裝到 struct 結構體中,這樣更加可視化,參考如下代碼:
class?Program{static?void?Main(string[]?args){var?list?=?new?List<Data>();}}public?struct?Data{public?Data(int?intValue,?string?strValue){IntegerData?=?intValue;StringData?=?strValue;}public?int?IntegerData?{?get;?private?set;?}public?string?StringData?{?get;?private?set;?}}點評區
這可能源自作者的想象,數據結構中也并沒有,也不需要這樣的數據結構,變通方法也很好,newfurniturey 大佬就總結的比較全面。
總結
以上是生活随笔為你收集整理的如何定义一个 Listint,string 这样的 List ?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于事件驱动架构构建微服务第15部分:S
- 下一篇: C#内建接口:IEnumerable