c# – 列出和foreach

c# – 列出和foreach,第1张

概述我似乎有一个非常奇怪的问题,我真的不知道发生了什么.这是我正在尝试调试的源代码 StorageFile file = await roamingFolder.GetFileAsync(filename);string text = await FileIO.ReadTextAsync(file);string[] shows = text.Split(new[] { ":?;" }, Str 我似乎有一个非常奇怪的问题,我真的不知道发生了什么.这是我正在尝试调试的源代码
Storagefile file = await roamingFolder.GetfileAsync(filename);string text = await fileIO.ReadTextAsync(file);string[] shows = text.Split(new[] { ":?;" },StringSplitoptions.None);List<show> showsList = new List<show>();foreach (string splitshow in shows){    string[] show1 = splitshow.Split(new[] { ",?;" },StringSplitoptions.None);    episode = show1[0];    name = show1[1];    showsList.Add(new show { name = name,episode = episode });}Output.ItemsSource = showsList;

奇怪的是,只有在我输出Output.ItemsSource = showsList时才显示列表;在foreach循环内部,但不在它外面的时候,我真的不明白它为什么不是.我的意思是列表的元素已经添加到它没有它们?

已经尝试了许多不同的方法,其中大多数方法即使他们确实显示列表数据有许多不同的问题,太复杂,无法解决.

无论如何,感谢任何提示或帮助,谢谢.

解决方法@H_403_12@ 我敢打赌你的数据不完全正确.我认为后一个/最后一个条目之一是抛出一个异常,它被吞没到你的代码中(或者没有报告给你的记录器/ UI).它永远不会完成foreach循环并退出方法,然后才能分配数据源.

我猜你的第二次拆分,其中一个条目实际上并不包含你的分隔符,?;所以show1数组的长度只有1,并且不包含“name”条目.当您尝试访问show1 [1]时,它会抛出IndexOutOfRangeException.

顺便说一句,我可以建议您使用更简单的分隔符进行调查,或者更好的是,使用某种形式的XML(或JsON或其他)序列化来读取数据.

编辑:我在您的评论中看到您发布的代码示例,问题是最后一个条目.给定hlj,?; lljhjh:?; hhmm,?; drr:?; oo,?; hello:?; ff,?; ff:?;,你的第一个String.Split *** 作:?;将产生一个空字符串作为最后一个条目.因此当你尝试进行第二次分裂时,?;它拆分为空并返回一个带有String.Empty单个条目的数组.当你点击show1 [1]时会抛出异常.

如果您将第一个拆分更改为使用StringSplitoptions.RemoveEmptyEntrIEs,则应删除空条目:

string[] shows = text.Split(new[] { ":?;" },StringSplitoptions.RemoveEmptyEntrIEs);

如果你愿意,你可以像if(show1.Length == 2)一样添加一个支票,然后你可以避免错误的数据(但也许你更愿意报告,以便你可以修复它).如果您的程序本身正在编写这些错误的数据,也许您应该进行一些快速的单元测试,以确保您始终在编写/读取有效数据.

总结

以上是内存溢出为你收集整理的c# – 列出和foreach全部内容,希望文章能够帮你解决c# – 列出和foreach所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1248325.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存