首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这三种在C#中创建新List<string>的方式有什么不同?

这三种在C#中创建新List<string>的方式有什么不同?
EN

Stack Overflow用户
提问于 2012-01-02 05:05:37
回答 6查看 191关注 0票数 6

这三种在C#中创建新List<string>的方式有什么不同?

代码语言:javascript
复制
A = new List<string>();
B = new List<string> { };
C = new List<string>() { };
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-02 05:10:17

这三种方法都是等价的,都会创建一个空的List<string>

  1. 是一种简单的、无参数的集合初始化语法,如果类提供了与2相同的无参数constructor
  2. the,则允许省略构造函数的大括号。
    1. 只提供可选的构造函数大括号。

集合初始化语法允许您在构造对象时提供数据,

代码语言:javascript
复制
List<string> list = new List<string> { "one", "two", "three" };

扩展到

代码语言:javascript
复制
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");

由编译器编写。

票数 4
EN

Stack Overflow用户

发布于 2012-01-02 05:10:24

这是没有区别的,因为您在声明列表时没有初始化列表中的任何内容。

如果要在声明时添加一些字符串,则需要使用第二种或第三种选择:

代码语言:javascript
复制
var B = new List<string> { "some", "strings" };
var C = new List<string>() { "some", "strings" };

只有在将值传递到List<of T>构造函数时,第三种选择才是必需的:

代码语言:javascript
复制
var C = new List<string>(5) { "some", "strings" };

代码语言:javascript
复制
var C = new List<string>(5); // empty list but capacity initialized with 5.

还有更多的构造函数可用于List<of T>类(例如,将现有的集合或IEnumerable传递到列表构造函数中)。详情请参见MSDN

票数 8
EN

Stack Overflow用户

发布于 2012-01-02 05:06:51

这些都是一样的。最终结果没有区别,只是语法不同。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8695528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档