2012-05-14 103 views
0

我目前正在處理一些代碼。我會減短的細節,但是這是我的經驗:無法使用屬性字符串值對象字段

這是類BookingObject

public class BookingObject 
{ 
    public BookingObject(int id, DateTime starttime) 
    { 
     this.id = id; 
     this.starttime = starttime; 
    } 
    public int id {get; set;} 
    public datetime {get; set;} 
} 

這是webform.aspx

List<BookingObject> bo = new List<BookingObject>(); 

    foreach (BookingObject book in bo) 
    { 
     int avcde = book.starttime.Hour; 
     //starttime is DateTime 
     TextBox1.Text = avcde.toString(); 
    } 

當我顯示在變量avcde一些文本框,它顯示null。 我試圖調試並標記賦值行,調試器顯示變量avcde0,但book.starttime.Hour顯示了一些整數值。從book.starttime.Hour到變量avcde的分配不成功。

我可以知道這有什麼問題嗎?

感謝您的幫助:-)

+1

我們可以看到其餘的代碼嗎?例如BookingObject的類定義和對文本框的賦值將會很有用...... – aleroot

+2

int不能被賦值爲空。它默認爲0.這個問題在別的地方。控制分配代碼在哪裏? –

+0

就我所見,這段代碼沒有問題。也許你在做別的事情呢? BookingObject構造函數是做什麼的?你在哪裏添加項目到列表中?也許你正在使用多線程或其他一些奇特的東西? –

回答

2

至於你的問題是基本的,我會給出一個基本的答案... foreach循環中創建的變量將在foreach循環後銷燬。如果沒有其他代碼,就很難診斷出這個問題。

+0

對不起..我會發布其餘的代碼 – danial

1

似乎很奇怪,一個非可空INT可以返回空值,是不可能的,我認爲,因爲默認值是零......

但是你試圖後直接在文本框中的值賦給每個循環?嘗試是這樣的:

List<BookingObject> bo = new List<BookingObject>(); 
    DateTime dt; 
    foreach (BookingObject book in bo) 
    { 
     dt = book.starttime; 

    } 
    //starttime is DateTime 
    TextBox1.Text = Convert.ToString(dt.Hour); 

嘗試使用此代碼,看看結果......

您確保TextBox.Text屬性沒有這一段代碼後重新分配?

+0

它不起作用,將book.starttime分配給變量dt時,它顯示爲0,dt.Hour.While調試時顯示爲0,dt值顯示了一些東西如'1/1/0001 12:00:00:000',開始時間爲'3/15/2012 8:00:00:00' – danial

+0

這意味着book.starttime在你的班級中是空的,那就是問題... – aleroot

+0

對不起,我的意思是在dt.Hour 0,我編輯了以前的評論:-)。該ID成功顯示在另一個文本框中,它只是日期 – danial

相關問題