簡體   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