小编Ces*_*ere的帖子

在c#中重新启动基于1的数组

我在c#中有一个基于1的数组(通过调用Excel范围的get_Value生成我得到一个2D数组,例如

object[,] ExcelData = (object[,]) MySheet.UsedRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
Run Code Online (Sandbox Code Playgroud)

这显示为一个数组,例如ExcelData [1..20,1..5]

有什么方法可以告诉编译器对此进行rebase,这样我就不需要在整个时间内向循环计数器添加1?

List<string> RowHeadings = new List<string>();
string [,] Results = new string[MaxRows, 1]
for (int Row = 0; Row < MaxRows; Row++) {
    if (ExcelData[Row+1, 1] != null)
        RowHeadings.Add(ExcelData[Row+1, 1]);
        ...
        ...
        Results[Row, 0] = ExcelData[Row+1, 1];
        & other stuff in here that requires a 0-based Row
}
Run Code Online (Sandbox Code Playgroud)

它使得事物的可读性降低,因为创建用于写入数组的数组将基于零.

.net c# excel

9
推荐指数
3
解决办法
4769
查看次数

Debug.Assert有时不起作用

我在函数中的Debug.Assert ine有以下问题

public override ReportErrorLevel GenerateResults(bool reformat) {
...
   for (int Col = MinResultsCol; Col < MaxResultsCol + 1; Col++) {
      try {
         ReportColumnTitle ColTitle = ColumnInfo[Col];

         #if DEBUG
         Debug.Assert(ColTitle.BreakOnGenerate, "...");
         #endif

         ...
      } catch ...
   }
}
Run Code Online (Sandbox Code Playgroud)

我使用这个,以便我可以在列中设置一个值,然后运行一个报告,当系统到达它中断的列时.

我遇到没有被捕获的情况,但是当我在循环之前设置一个无条件断点,然后一旦达到它就运行,然后捕获断言(在这种情况下是第15次循环).

(#if DEBUG就在那里,因为ReportColumnTitle.BreakOnGenerate也在#if DEBUG部分) - 我不是要求查看这是否正确:)

除了设置断点之外,这是不一致的,然后似乎每次都正确地抛出断言.

有任何想法吗?

c# debugging visual-studio

2
推荐指数
1
解决办法
1344
查看次数

标签 统计

c# ×2

.net ×1

debugging ×1

excel ×1

visual-studio ×1