반응형
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 값은 계산을 하지 않는다.
반응형
'C# > 문제해결' 카테고리의 다른 글
0316 _ overloading 사용 (0) | 2021.03.16 |
---|---|
0316_ 다른 클래스에서 맴버변수 값 가져오는 법 (0) | 2021.03.16 |
0316_일관성 없는 엑세스 가능성 (0) | 2021.03.16 |
0315 _ enum 값을 배열로 나타내는 법 (0) | 2021.03.15 |
0315 _ 배열 인스턴스 생성, 초기화 부분 실수 (0) | 2021.03.15 |