繁体   English   中英

如何查看清单 <string> 一片空白

[英]how to check List<string> is null

我想检查值(它的类型是list),如果它为null,它会从循环的开头重新开始,如果不是,则是counter ++。 我的意思是,如果值就像: "values": []在循环开始时重新编译。

我尝试了if (id==null) and also I used this one (id.Contains(""))但是发生了错误。 错误:索引超出范围。 必须为非负数且小于集合的大小。参数名称:index(未处理参数超出范围的异常)。

我要检查的数据(当值为空时)

{
  "cid": "241",
  "fnames": [
    "id",
    "name",
    "hash",
    "score",
    "rank"
  ],
  "values": [],
  "tal": 0,
  "sion": "v3"
}

完整数据(值不为null时)

{
  "cid": "64",
  "fnames": [
    "id",
    "name",
    "hash",
    "score",
    "rank"
  ],
  "values": [
    [
      "126",
      "126",
      "126",
      "1",
      "2.77"
    ],
      "tal": 0,
      "sion": "v3"
    }

foreach (DataRow row in dt.Rows)
{
string url = "http://hgsfe/<uid>?groups=<uid>
var test = url.Replace("<uid>", Convert.ToString(row[uid]));
System.Diagnostics.Process.Start(test);
string client = (new WebClient()).DownloadString(test);
var pi = JsonConvert.DeserializeObject<read_json>(client);
List<string> id = pi.values[0];
if (id==null)         //also I used this one (id.Contains(""))   
continue;
if (id.Contains(Convert.ToString(row[tid])))
{
counter++;
}

尝试检查pi.Countpi.Length以获取列表中的项目数。

您必须同时检查:

 pi == null
 pi.values[0] == null

因为您尝试分配,但是pi不存在事件(可能)

在调试代码时,您可以清楚地看到应用程序崩溃的位置。

希望我能帮你

尝试以下

List<string> id = pi.values.ToList();

然后,只需检查列表的Count属性

if(id.Count<1)
    continue;
...
...

您确实为代码提供了很多“未知数”,但是这可能是错误的,应该检查一下以使代码更安全:

  • 什么是uid 您正在访问row[uid] row类型为DataRow ,其中不存在的访问项(由uid指定)将引发异常
  • pi是什么? pi.valuespi.values 也许您应该检查pi是否为null, pi.values是否为null,并且应该确定检查pi.values包含任何项目(因此,如果item values[0]存在)。 如果其为空,则values[0]将引发您提到的异常。
  • 可能存在pi.values[0] ,但可以再次将其分配为null。 所以您的行if (id.Contains...可能会因为您尝试调用id 。而id.Contains null项目id而失败。请在调用之前检查其是否不为null。
  • 什么是tidrow[tid] 再次,检查该项目是否存在于行中,这样就不会出现DataRow异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM