C#/문제해결

0315_개체 참조가 개체의 인스턴스로 설정 되지 않았습니다.

minquu 2021. 3. 15. 18:21
반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study05
{
    public class Inventory
    {

        int capacity;
        Item[] items;
        int index;


        public Inventory(int capacity) {
            this.capacity = capacity;
            this.items = new Item[this.capacity];
            
        }

        public void Additem(Item item) {
            this.items[this.index] = item;
            Console.WriteLine("{0}인덱스에 {1}아이템을 넣었습니다.", this.index, item.GetName());
            this.index++;
        }

        public void FindItem(string name) {
            for (int i = 0; i < this.items.Length; i++) {
                var item = this.items[i];
                if (item != null)
                {
                    if (item.GetName() == name)
                    {
                        Console.WriteLine("{0}은 인벤토리에 해당 아이템이 있습니다.", name);
                        break;
                    }

                }
                else
                {
                    Console.WriteLine("{0}은 인벤토리에 해당 아이템이 없습니다.", name);
                    break;
                }
        
            }
        }
        public void Print()
        {
            foreach (Item item in this.items)
            {
                Console.WriteLine("{0}, {1}", item.GetName(), item.GetItemType());
            }
        }
        
    }
}

 

 

Print 메서드 foreach를 돌리면 Null 값 까지 계산을 하기 때문에 

 

개체 참조가 개체의 인스턴스로 설정 되지 않았습니다. 오류가 뜬다.

 

해결방법

-> if 구문을 넣어줘서, 만약 null이 아닐경우 출력하는 한다는 조건문을 걸어주면

    null 값은 계산을 하지 않는다.

반응형