在索引处的 List<T> 中添加值的 C# 方法

Posted

技术标签:

【中文标题】在索引处的 List<T> 中添加值的 C# 方法【英文标题】:C# way to add value in a List<T> at index 【发布时间】:2012-05-04 07:47:43 【问题描述】:

有什么方法可以在特定索引处添加值?我尝试做索引器并且我有列表。在这种情况下有什么技巧可以做到这一点:D

 public class Multime<T>

    private List<Multime<T>> multiSets;
    private List<T> multimea;


    ***public Multime<T> this[int index]
    
        get  return this.Multisets.ElementAt(index); 
        set  this.Multisets.CopyTo(value,index); 
    ***



    public List<Multime<T>> Multisets
    
        get  return this.multiSets; 
        set  this.multiSets = value; 
    //accesori Multimea de multimi

    public List<T> Multimea
    
        get  return this.multimea; 
        set  this.multimea = value; 
    //Accesori Multime

【问题讨论】:

您是否尝试查看 List 已经提供的方法?有一种明显的可能性可以完全满足您的需求。 INSERT 不好 :D,我不想修改列表的其余部分,我想在索引处添加/替换 【参考方案1】:

您可能正在寻找更像字典或地图的东西。这些是允许您使用键值对分配对象的集合类型,因此您始终可以在特定位置分配对象并从同一位置检索它。您可能认为您需要该列表,因为您不知道要存储多少条记录,但如果您对最大记录数有所了解,它将帮助您决定是否可以使用字典之类的东西。我认为限制非常高,但是您可以查看 Dictionary 类以查看限制。

【讨论】:

【参考方案2】:

尝试使用List.Insert

这应该可以解决您遇到的问题。

【讨论】:

【参考方案3】:

List&lt;T&gt; 上的 .Insert() 方法正是为此目的:

someList.Insert(2, someValue);

这将修改someList 集合以在索引2 处插入someValue,将其他值推高一个索引。

更多信息here。

【讨论】:

【参考方案4】:

你能用List.Insert吗?

【讨论】:

【参考方案5】:

List&lt;T&gt;.Insert,也许?

但我建议您可能只想获取/写入 - 而不是插入:

public Multime<T> this[int index]

    get  return Multisets[index]; 
    set  Multisets[index] = value; 

请注意,从 C# 3 开始,有更简单的方法来编写这些属性,顺便说一句:

public List<T> Multimea  get; set; 
public List<Multime<T>> Multisets  get; set; 

实际上直接公开组合集合通常也不是一个好主意 - 这意味着您无法控制这些集合中发生的事情。

【讨论】:

我认为它将元素 [index] 移动到 index+1 我不想影响列表的其余部分,我只需要替换 index 处的对象 @TyGerX:所以您应该询问替换,而不是添加。查看我的编辑。 set Multisets[index] = value;不工作我不知道为什么会出现一些编译错误,因为我认为 Multisetst 是 List @TyGerX:“一些编译错误”在描述中留下了很多不足之处。请阅读tinyurl.com/so-hints @TyGerX 这不是编译时错误……那是运行时错误。这是因为您使用了超出有效范围的索引,即访问不存在的项目。这里列出的代码很好。

以上是关于在索引处的 List<T> 中添加值的 C# 方法的主要内容,如果未能解决你的问题,请参考以下文章

从现有列表中特定索引处的元素创建新列表

如何检查 List<T> 元素是不是包含具有特定属性值的项目

List<T>.ForEach 带索引

为啥 List<T> 的“索引超出范围”异常,但数组却没有?

哪个更好?数组、ArrayList 或 List<T>(在性能和速度方面)

action中list传到JSP中取不到值的问题