咨询区

  • Benny Ae

我在想为什么 C# 中没有内置带两列的 List 结构,如:

List<int,string> mylist= new List<int,string>();

回答区

  • newfurniturey

虽然没有内置,但还是有其他解决方案的,大体上有四种。

  1. 使用 Tuple<int, string>

如果你用的是 C#7 之前的版本,而且还要坚持用 Listkey-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));}
  1. 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)>();}
  1. 使用 Dictionary<int,string>

如果你关注的只是键值对,完全可以用 Dictionary 替代 List

static void Main(string[] args){Dictionary<int, string> mydict = new Dictionary<int, string>();// add an itemmydict.Add(someInt, someString);}
  1. 使用 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 ?相关推荐

  1. java string 数组 个数,Java - 定义一个接收String的方法,并返回一个整数数组,其中包含每个元音的数量...

    (对不起提前q长 - 只是想详细说明!) 嗨,大家好, 我一直在努力让这段代码编译这么长时间,我已经到处研究过(包括在这里!)但似乎没有任何工作,我一直在收到错误.我不断调整我如何定义我的静态方法以及 ...

  2. 定义一个Car类,完成成员方法构造方法的多种使用方法以及基本案例

    定义一个汽车类 package leiDeDingYi_leiDeShiYong;public class Car {//定义一个类String color;//成员变量 车的颜色int wheelN ...

  3. 定义一个泛型为String类型的List集合,统计该集合中每个字符 (注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素, 程序最终输出结果为:

    代码 import java.util.*;/*6.定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数.例如:集合中有"abc".&q ...

  4. 使用string定义一个变量如何输出

    先定义一个string类型的变量: string a("A20"); 两种方法输出: //第一种 printf("\n %s \n", a.c_str()); ...

  5. vb6.0 定义一个公共类_纠正网上的错误:能不能自定义一个类叫java.lang.System/String?...

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:一汪清水  来源:https://dwz.cn/i7Pf6VwZ 最近,学习了下java类加载相关的知识.然后看到网上有一道面试题 ...

  6. 2、设计2个类,要求如下:[必做题] 2.1 定义一个汽车类Vehicle, 2.1.1 属性包括:汽车品牌brand(String类型)、颜色color(String类型 )和速度speed(do

    2.1 定义一个汽车类Vehicle 2.1.1 属性包括:汽车品牌brand(String类型).颜色color(String类型)和速度speed(double类型). 2.1.2 至少提供一个有 ...

  7. Java——(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age) (2)定义Map集合,用Student对象作为key

    分析以下需求,并用代码实现: (1)定义一个学生类Student,包含属性:姓名(String name).年龄(int age) (2)定义Map集合,用Student对象作为key,用字符串(此表 ...

  8. 1.定义一个Father和Child类,并进行测试。 要求如下: 1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。 2)Child

    1.定义一个Father和Child类,并进行测试.  要求如下:  1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为"zhangjun" ...

  9. 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?...

    既然见到了公司,我们可以定义一个Class Company ,那么我们见到了字段,是不是也可以定义一个Class ColumnInfo呢? 公司的描述信息类: 代码 public class Comp ...

最新文章

  1. mysql all 授权_mysql给数据库授权 GRANT ALL PRIVILEGES ON
  2. 开发函数计算的正确姿势——tensorflow serving
  3. CSS3几种新的长度单位
  4. java中断响应时间_Java多线程 sleep方法响应中断 sleep面试问题(与wait/notify的
  5. 【微软之--起源】(转载自腾讯科技)
  6. 基于深度学习的目标检测
  7. 《C和C++程序员面试秘笈》——1.4 i++与++i哪个效率更高
  8. Rad Software Regular Expression Designer 正则表达式工具软件
  9. quartz.net 时间表达式----- Cron表达式详解
  10. 多因素deseq2 formula 怎么理解 如何设置design 哈佛大学——差异表达分析(七)设计公式(Design formulas)多因素差异分析 多个影响因子会影响差异分析结果 多因子
  11. Latex 温度单位命令
  12. 双击ie浏览器没反应打不开的解决方法
  13. html怎么去除照片背景颜色,怎么去掉背景色?
  14. C语言编程编制职工档案管理程序,C语言 编写一个职工档案程序.doc
  15. 转(havel 算法)
  16. C源码:常用攻击程序
  17. 为什么靠谱的老板,不会要求员工忠诚?
  18. Python基础1 #博学谷IT学习技术支持
  19. 《青春有你》新增公益任务 张艺兴蔡依林等当导师
  20. 考研高等数学知识框架

热门文章

  1. python pysnmp使用
  2. HDS业务定义永续IT架构
  3. 11月22日北京.net俱乐部活动ppt下载以及11月19日微软西格玛IE8开发讲座ppt下载
  4. asp.net 日期转换
  5. PHP 发送Email的几种方法
  6. 使用myeclipse建立maven项目(重要)
  7. Python的魔法方法 .
  8. 设计模式之-命令模式(Command Pattern)
  9. [原]NYOJ-开灯问题-77
  10. javascript一些常用的代码