在索引处的 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<T>
上的 .Insert()
方法正是为此目的:
someList.Insert(2, someValue);
这将修改someList
集合以在索引2
处插入someValue
,将其他值推高一个索引。
更多信息here。
【讨论】:
【参考方案4】:你能用List.Insert吗?
【讨论】:
【参考方案5】:List<T>.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> 的“索引超出范围”异常,但数组却没有?