C# - ASP.NET List的Add和Append方法之间的区别?

kob*_*owo 9 c# asp.net

C#中的列表.Append().Add()方法之间是否存在差异?我尝试在谷歌和网站上搜索,但令我惊讶的是没有人问过它.我的理由是要知道这两种方法中的一种是否性能较低.我一直在交替使用这两种方法,我没有看到它们的功能有任何差异,因为它们都将我的对象添加到列表的末尾(这或多或少是视觉工作室在你看到时给你的描述)方法描述).

编辑:

嗯,我一开始并不认为这很重要,但我发现当我无法在控制台应用程序上执行此操作时,我可以在ASP.NET Web应用程序上使用Append.所以我在ASP.NET Web App的上下文中提出这个问题.抱歉这是混乱.

kni*_*ttl 18

List<T>在C#中只有修改实例的void Add(T item)方法将单个项添加到列表中.

IEnumarable<T> Append(this IEnumerable<T> source, T element)另一方面,是在IEnumerable接口上定义的扩展方法(由所有列表实现).它不会修改原始列表实例,但会返回一个新的枚举,它将在序列的末尾生成指定的元素.

它们不能互换使用,并且表现不同,具有不同的结果和不同的副作用.询问他们的相对表现是没有意义的.

var list = new List<string>();
list.Add("one");
list.Add("two");
// list contains: [ one, two ]

list.Append("three");
// list still contains: [ one, two ]
Run Code Online (Sandbox Code Playgroud)

  • @kobowo 为了使用 Linq 扩展(例如“Append”),您通常需要在要使用它们的文件中包含“using System.Linq;”。我怀疑这就是为什么您会看到“Append”可用性不一致的原因。您应该能够在控制台应用程序和 ASP.NET 中使用它。 (2认同)
  • @kobowo `.Append` 从 .NET Framework 4.7.1 开始包含在内。 (2认同)

And*_*ton 16

Add 是空的。

Append 返回一个 IEnumerable 以便您可以

var x = new List<int>();
x.Add(1);
x = x.Append(2).Append(3).ToList();
Run Code Online (Sandbox Code Playgroud)

您可能希望查看Wikipedia:Fluent interface以获取有关链接函数如何工作的更多信息。

  • 非常清晰易懂。Add 修改原始数据,Append 返回新数组而不修改原始数据 (13认同)