2012-11-27 113 views
0

上傳通過網絡形式的文件,並解析其內容列表,我怎麼允許空值或空值解析爲C.MN,C.LN當空/空值,C.Val這三個都是公開數據類型聲明像這樣允許公共數據類型

Namespace datatypes 

     Public class Uploads 
    { 

     Public long Mn {get; set;} 
     Public int LN  { get;set } 
     Public int Val {Get;Set} 
    } 

    List<Uploads> CDU = new List<Uploads>(); 
       string[] fields; 

       string data = read.ReadLine(); 
       while ((data = read.ReadLine()) != null) 
       { 
        if (data.Length != 0) 
        { 
         Uploads C = new Uploads(); 
         fields = data.Split(','); 
         C.LN = Convert.ToInt32(fields[0]); 
         C.MN = Convert.ToInt64(fields[1]);       
         C.Val = Convert.ToInt32(fields[2]); 
         CDU.Add(C); 

回答

1

簡而言之,您必須使用可爲空的值類型,例如

public class Uploads 
{ 
    public long? Mn { get; set; } 
    public int? LN { get; set; } 
    public int? Val { get; set; } 
} 

當然,你需要制定出是否給他們一個值或保留爲空,可能是基於字符串是否爲空。

例如:

C.LN = fields[0] == "" ? (int?) null : Convert.ToInt32(fields[0]); 

或者只是:

if (fields[0] != "") 
{ 
    C.LN = Convert.ToInt32(fields[0]); 
} 

順便說一句,這些名稱是完全不可維護。六個月後,你會有什麼想法他們的意思是什麼意思?

+0

亞這就是我所嘗試的,我仍然在運行時得到不正確的輸入字符串錯誤 – LewSim

+0

@LewSim:這可能是因爲你沒有做我談到的中間位:「當然,你需要制定出是否給他們一個價值或讓他們爲零「。當然,還有你的代碼沒有試圖做到這一點 - 它只是*始終*調用'Convert.ToInt32'。 –

+0

正常是這部分我錯過了,讓他們空並繼續解析 – LewSim

1

使用可空類型,像這樣:

public class Uploads 
{ 
    public long? Mn { get; set; } 
    public int? LN { get; set } 
    public int? Val { get; set } 
} 

有關解析字符串爲空值的信息,請參閱here

相關問題