「knownSolarSystems」と呼ばれる配列内のすべてのオブジェクトを「チェック」しようとしますが、定義のためにすべての配列スロットが設定されています。(少なくともそれは空のレルではありません)
CSolarSystem[] knownSolarSystems;
public void Start () {
knownSolarSystems = new CSolarSystem[10];
knownSolarSystems[0] = new CSolarSystem();
}
上記では、配列の最初(0番目?)のスロットに貼り付けたCSolarSystemクラスのオブジェクトを作成しました。(knownSolarSystems [0])
しかし、オブジェクトが1つしかない場合でも、foreachループは10回続き、まだ定義されていないいくつかのオブジェクトにアクセスしようとするため、エラーが発生します。
これはforeachループです:
foreach(CSolarSystem solarSystem in knownSolarSystems) {
solarSystem.Update();
}
そしてこれはエラーです:
NullReferenecException: Object reference not set to an instance of an object CUniverse.Update()
それで、埋められていないスロットを「スキップ」する方法はありますか?
よろしくお願いいたします。deSpeach
それで、埋められていないスロットを「スキップ」する方法はありますか?
それがまだ初期化されていないかどうかを簡単に確認できます(null
):
foreach(CSolarSystem solarSystem in knownSolarSystems.Where(s => s != null)) {
solarSystem.Update();
}
using System.Linq
ファイルの先頭に追加する必要があることに注意してください。
別の方法は、List<T>
増やすことができる配列の代わりに使用することです。
List<CSolarSystem> knownSolarSystems = new List<CSolarSystem>();
public void Start () {
knownSolarSystems.Add(new CSolarSystem());
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加