列表列表的 C# 索引器
本文关键字:列表 索引 | 更新日期: 2023-09-27 17:56:29
大家好我想为列表列表制作一个索引器来获取像这样的项目 myopj[i,j] .我的数据结构是这样的:
list<list<doubl>>
我尝试这样的代码,但它不起作用
public double this[int r, int c]
{
set
{
if (this.list1.Count == 0 )
{
this.list1[r].Add(value);
}
else
this.list1[r][c]=value;
}
}
当我观看它时,程序不会输入"如果",它会结束观看。
请问有人可以帮忙吗
并感谢大家.
您应该检查计数,而不是容量。容量是列表可以具有的元素数,计数是列表中的实际项目数。因此,给定一个不为空的列表,容量不应为零,但计数可以是。
你的value
要么是list<T>
要么是T
,这似乎很奇怪。
如果没有更多信息,我建议您使用单个长 T 列表来实现这一点。然后,您将myList<T>[i,j]
转换为基础list<T>[ i * numRows + j]
。
根据需要点缀验证。
如果你真的,真的必须使用列表列表,弄清楚你是否想得到一个矩形矩阵(即第 i
行的列表与第 j
行的列表具有相同数量的元素),或者一个交错数组(其中每个列表都有独立数量的元素)。如果您处于第一种情况,请考虑使用适当数量的元素自动创建和填充行列表(使用default<T>
初始化它们)
更新:
然后,如果你真正需要的是一个矩形矩阵,那么使用一个列表。它将具有 numRows * numColumns 元素。想象一下,不是将一行放在另一行下以创建矩阵,而是将一行的元素一个接一个地放置。
因此,如果您有:11 12 1321 22 2331 32 33
以列表形式,它们将是11 12 13 21 22 23 31 32 33
第一种形式的 X 和 Y(或 i 和 j)坐标与第二种形式列表中的索引之间存在简单的转换。
检查容量?它可能永远不会为零。你的意思是检查Count
吗?
你想要长度属性,而不是 Capactiy。
用:
if (this.list1.Count < r )
你的算法并没有多大意义,你可能想描述你想要完成什么。看起来你正在试图让它增长,如果它不够大,但两个单独路径(如果其他)中的逻辑不一致。