[英]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.Count
或pi.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.values
是pi.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。 tid
在row[tid]
再次,檢查該項目是否存在於行中,這樣就不會出現DataRow異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.