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が失敗しました。

それの何が問題なのかわかりますか?

ご協力いただきありがとうございます :-)

4

2 に答える 2

2

あなたの質問は基本的なので、基本的な答えを出します... foreach ループ内で作成された変数は、foreach ループの後に破棄されます。コードの残りの部分がなければ、それ以上の問題を診断するのは困難です。

于 2012-05-14T18:21:33.377 に答える
1

nullableでないintがnullを返すことができるのは非常に奇妙に思えますが、デフォルト値がゼロになるため、不可能だと思います...

ただし、for each ループの後で textBox に値を直接代入しようとしましたか? このようなことを試してください:

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 プロパティが再度割り当てられていないことを確認してください。

于 2012-05-14T18:51:02.823 に答える