提问人:sharls 提问时间:11/16/2023 最后编辑:Brian Tompsett - 汤莱恩sharls 更新时间:11/17/2023 访问量:34
数组维度超出了支持的范围。.NET API 接口
Array dimensions exceeded supported range. .NET API
问:
是否可以遍历一个类型?我正在尝试创建一个 using while 循环。TimeOnly
List<TimeOnly>
[HttpPost]
public async Task<ActionResult<Shedule>> CreateNewShedule(SheduleCreateDto sheduleCreateDto)
{
var hours = new List<TimeOnly>{};
var startHour = TimeOnly.Parse(sheduleCreateDto.StartHour);
var endHour = TimeOnly.Parse(sheduleCreateDto.EndHour);
while(!startHour.Equals(endHour)){
hours.Add(startHour);
startHour.AddMinutes(15);
}
var shedule = new Shedule
{
WeekDay = sheduleCreateDto.WeekDay,
VisitTime = sheduleCreateDto.VisitTime,
Hours = hours
};
_context.Shedules.Add(shedule);
if( await _context.SaveChangesAsync() > 0) return Ok(shedule);
return BadRequest("Failed to add shedule");
}
当我发布请求时,它看起来像循环是无限的,然后我得到了这样的错误:
数组维度超出了支持的范围。
当我使用 for 循环和
答:
0赞
Tim Schmelter
11/16/2023
#1
主要问题是 TimeOnly.AddMinutes
返回一个新的(因为您无法修改它)。所以你必须把它赋值给变量:TimeOnly
startHour
startHour = startHour.AddMinutes(15);
下一个问题是,可能永远不会等于 .所以使用:startHour
endHour
<
while(startHour < endHour)
{
hours.Add(startHour);
startHour = startHour.AddMinutes(15);
}
您还应该首先确保你有有效的时间,所以 end 应该在 start 之后出现:
var startHour = TimeOnly.Parse(sheduleCreateDto.StartHour);
var endHour = TimeOnly.Parse(sheduleCreateDto.EndHour);
bool valid = endHour > startHour; // handle invalid now and don't start processing
评论
0赞
sharls
11/16/2023
我添加了两者,同样的事情发生了。我担心也许我传递了错误的数据来创建变量,但是当我手动声明它们时,它仍然不起作用。
0赞
Tim Schmelter
11/16/2023
sharls:你知道如何使用调试器吗?现在是使用它的好时机:)
0赞
sharls
11/16/2023
我正在学习它,但会尝试
0赞
Tim Schmelter
11/16/2023
@sharls:我找到了真正的问题并编辑了我的答案(第一部分)。
0赞
sharls
11/16/2023
是的,它现在可以工作了。我也在调试器中发现它没有递增。谢谢。
评论