2012-05-14 57 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

相关问题