tomtom131
@tomtom131 (tom tom)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[Unity]DateTime.HourでNullReferenceExceptionエラーが発生する

解決したいこと

Unity初心者です。
Unityで、ある期間の1時間ごとのデータを取得するプログラムを作成しています。開始日時から終了日時までを1時間刻みでリストに入れてforeachで回し、DateTime.Hourで取り出した時間を引数にして計算しようとしているのですが、以下のようなエラーが出てうまくいきません。

発生している問題・エラー

NullReferenceException: Object reference not set to an instance of an object
SolarPower.SolarCalculate (System.DateTime Time, System.Int32 HOur, System.DateTime datefrom) (at Assets/SolarPower.cs:488)
SolarPower.Update () (at Assets/SolarPower.cs:552)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード



public void SolarCalculate(DateTime Time, int HOur,DateTime datefrom)
    {
       //日時から計算を行う
    }
void Update(){
     GetTimeList(ref TimeList, StartdateTo, EnddateTo); //DateTime型StartdateToからEndDateToまで1時間ごとに分割してリストに入れる
     foreach (DateTime time in TimeList)
     {
         int HOUr = time.Hour;
         SolarCalculate(time,HOUr, dateFrom);
     }
}

自分で試したこと

・HOUr(SolarCalculateの第2引数)に例えば1などの数字を入力したときは問題なくできた
・HOUrの数字を表示すると希望どうりの数字がちゃんと入っている
time.Hourからintへの変換に何か問題があるのでしょうか?

0

1Answer

NullReferenceException: Object reference not set to an instance of an object
SolarPower.SolarCalculate (System.DateTime Time, System.Int32 HOur, System.DateTime datefrom) (at Assets/SolarPower.cs:488)
SolarPower.Update () (at Assets/SolarPower.cs:552)

これは、「SolarPower.cs552行から呼ばれた488行で、nullを参照してエラーした」という意味です。

Assets/SolarPower.cs:552
         SolarCalculate(time,HOUr, dateFrom);

が552行ですね?
そして、448行は以下の計算中の何処かでしょうか?

Assets/SolarPower.cs
public void SolarCalculate(DateTime Time, int HOur,DateTime datefrom)
    {
       //日時から計算を行う
    }

これ以上のことは、「日時から計算を行う」の中身、特に448行の前後を拝見しなければ解りません。

なお、SolarCalculateが受け取る引数は、構造体と整数なので、nullにはならないようです。

1Like

Comments

  1. @tomtom131

    Questioner

    488行から辿っていくと、ifの分岐がうまくいっておらず定義していない値を参照してしまっていたのと他にもエラーをいくつか発見でき、無事解決しました。教えていただきありがとうございました!

Your answer might help someone💌