C# 如何在循环中显示元素元组int,int?
我以元组结构存储数据:C# 如何在循环中显示元素元组int,int?,c#,winforms,c#-4.0,C#,Winforms,C# 4.0,我以元组结构存储数据: Dictionary<Tuple<int, int>, object> data = new Dictionary<Tuple<int, int>, object>(); 如何做到这一点?我认为你在这项工作中使用了错误的工具。使用二维数组会容易得多: var data = new object[range.RowCount() + 1, range.ColumnCount() + 1]; for (int i = 1;
Dictionary<Tuple<int, int>, object> data = new Dictionary<Tuple<int, int>, object>();
如何做到这一点?我认为你在这项工作中使用了错误的工具。使用二维数组会容易得多:
var data = new object[range.RowCount() + 1, range.ColumnCount() + 1];
for (int i = 1; i < range.RowCount() + 1; i++)
{
for (int j = 1; j < range.ColumnCount() + 1; j++)
{
data[i, j] = ws.Cell(i, j).Value;
}
}
for (int i = 1; i < data.GetLength(0) + 1; i++)
{
for (int j = 1; j < data.GetLength(1) + 1; j++)
{
Console.WriteLine(data[i, j]);
}
}
var data=新对象[range.RowCount()+1,range.ColumnCount()+1];
对于(int i=1;i
(我保留了一个基于索引的索引,虽然我认为使用基于0然后在访问数组时减少Excel索引更直观)
第一件要考虑的事情。当您在字典中将对象用作键时,如果它不是基元或字符串对象,则需要相同的实例来检索值。或者实现equals方法来检查给定实例是否等于@George Alexandria注释的已知键。这是通过基本键和字符串键在内部实现的。 您还可以尝试循环字典中存储的密钥集 第二个错误是试图用两个键检索值。您需要传递包含i,j而不是i,j的对象实例。应如下所示: 数据[新元组(i,j)] 而不是: 数据[i,j]您在字典中的键是
Tuple
,因此您无法通过int
键获得值,例如asdata[i]
我有数据
作为矩阵Excel。我需要避免第一行(标题)并获取每个字段的值。您可以使用自定义EqualityComparer
创建Dictionary
,并尝试访问值,如data[new Tuple(I,j)]
这一行data[I,j]中是否存在编译时异常代码>?)你有充分的理由使用字典吗?看起来您最好使用二维对象数组(object[,]
)谢谢,请告诉我如何在类中将对象声明为public?如下所示:对象数据=新对象[,]代码>公共对象[,]数据代码>。在知道大小之前,您不能初始化它。我不能这样使用,因为我有两个方法,一个是填充,另一个是显示。thisvar data=new object[range.RowCount(),range.ColumnCount()代码>以null填充对象,否则如果没有数据,我看不出这是个什么问题。无论如何,在初始化之前都不能显示数据,因此当填充数据的方法尚未调用时,返回null
for (int i = 1; i < data.Count + 1; i++)
{
for (int j = 1; j < data.Count + 1; j++)
{
data[i, j];
}
}
var data = new object[range.RowCount() + 1, range.ColumnCount() + 1];
for (int i = 1; i < range.RowCount() + 1; i++)
{
for (int j = 1; j < range.ColumnCount() + 1; j++)
{
data[i, j] = ws.Cell(i, j).Value;
}
}
for (int i = 1; i < data.GetLength(0) + 1; i++)
{
for (int j = 1; j < data.GetLength(1) + 1; j++)
{
Console.WriteLine(data[i, j]);
}
}