【问题标题】:UWP using MVVM and get this errorUWP 使用 MVVM 并收到此错误
【发布时间】:2016-12-20 20:02:41
【问题描述】:

所以我正在开发一个 UWP 应用程序,并且我正在使用 MVVM 来解析 JSON 文件,但有时(并不总是但足以令人担忧)我收到此错误:

“System.ArgumentOutOfRangeException”类型的异常发生在 mscorlib.ni.dll 中,但未在用户代码中处理

附加信息:索引超出范围。必须为非负数且小于集合的大小。

而且总是出现在这一行:

public BackgroundViewModel SelectedGame
    {
        get { return (_SelectedIndex >= 0) ? _game[_SelectedIndex]: null; }
    }

我正在解析的文本文件也没有那么大:

[{"name" : "BrainBox", "image" : "/Images/BrainBox.jpg"},

{   "name" : "DownToATea", 
    "image" : "/Images/DownToATea.jpg"},

{   "name" : "FoalShadow", 
    "image" : "/Images/FoalShadow.png"},

{   "name" : "GoWithTheBuffLow", 
    "image" : "/Images/GoWithTheBuffLow.jpg"},

{   "name" : "SpotTheDifference", 
    "image" : "/Images/SpotTheDifference.png"}

]

任何关于此事的帮助将不胜感激

【问题讨论】:

  • 你需要学习如何调试你的代码。五秒钟,你就会得到答案。 msdn.microsoft.com/en-us/library/sc65sadd.aspx
  • @Will 我正在尝试,但仍然无法找到答案,所以我想我会问而不是把整个事情拆开试图修复它
  • @Jeroen 被别人解决了
  • 没有必要“把整个事情分开”。在索引到数组之前,您没有执行边界检查。 不要那样做
  • @Will 好吧,我和我的老师都在通过应用程序和调试器,看不到错误,所以我想我会问一些更有经验的人。新鲜的眼睛有时是最好的事情

标签: c# json parsing


【解决方案1】:

线索在附加信息中:

“System.ArgumentOutOfRangeException”类型的异常发生在 mscorlib.ni.dll 中,但未在用户代码中处理

附加信息:索引超出范围。必须为非负数且小于集合的大小。

我们可以猜测它可能发生在以下情况之一:

  1. _SelectedIndex 是基于 1 的经典因 1 错误而关闭
  2. _SelectedIndex 的默认值为 0,即使没有游戏可供选择。
  3. _game 中删除了一个游戏,而_SelectedIndex 仍然指向最后一个。

基本上,_SelectedIndex_games 的数量不同步。这可以通过将索引限制在数组_game 的边界内来解决:

return (0 <= _SelectedIndex && _SelectedIndex < _game.Count) ? _game[_SelectedIndex] : null;

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2018-12-23
    相关资源
    最近更新 更多