在 C# 中创建具有“foreach”循环的字符串数组
本文关键字:循环 字符串 数组 foreach 创建 | 更新日期: 2023-09-27 18:36:13
我稍微修改了 msdn.com 的一些代码。我正在尝试在Excel电子表格中获取所有工作表名称的字符串数组。我可以在 foreach
语句中添加一些代码,以便每次循环时都放置 attr。值到数组中?
public static void GetSpreadsheetData(string fileName)
{
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))
{
string[] allTheSheets = new string[0];
string[] allTheData = new string[0];
S sheets = spreadsheetDocument.WorkbookPart.Workbook.Sheets;
foreach (E sheet in sheets)
{
foreach (A attr in sheet.GetAttributes())
{
int i = 0;
string sheetName = attr.Value;
allTheSheets[i] = attr.Value.ToString();
i++;
Console.WriteLine(allTheSheets[0]);
Console.ReadLine();
}
}
}
}
这是我收到的错误消息:
"索引超出了数组的范围。"
让我感到困惑的一件事是,当我实例化数组时,我给了它一个索引 [0],那么这怎么在边界之外呢?
您已经创建了一个可以只包含一个元素的数组,并且此元素将存储在索引 0 处。当然,如果你的内部循环中有多个类 A 实例,那么数组中需要更多的元素。
您可以更改代码以使用List<string>
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))
{
List<string> allTheSheets = new List<string>();
List<string> allTheData = new List<string>();
S sheets = spreadsheetDocument.WorkbookPart.Workbook.Sheets;
foreach (E sheet in sheets)
{
foreach (A attr in sheet.GetAttributes())
{
string sheetName = attr.Value;
allTheSheets.Add(attr.Value.ToString());
}
}
在这两个循环结束时,您将拥有列表中的所有 A 值allTheSheets
,您可以使用另一个 foreach 查看其内容。
话虽如此,你的代码看起来有点奇怪。用于存储和打印字符串元素的索引始终为零,因此您不应该有任何Index Out Of Bound
。