Notice
Recent Posts
Recent Comments
Link
스토리지
[3.16] 배열 및 클래스 복습 2 본문
using System;
namespace Study07
{
public class App
{
public App()
{
//Fruits배열 선언
Fruits[] fruits;
//배열 인스턴스화
fruits = new Fruits[3];
//Fruits 객체 생성
Fruits data1 = new Fruits(2500, "사과");
Fruits data2 = new Fruits(3000, "복숭아");
Fruits data3 = new Fruits(5000, "수박");
//배열의 요소에 추가
fruits[0] = data1;
fruits[1] = data2;
fruits[2] = data3;
//배열 요소를 출력
foreach (var i in fruits)
{
Console.WriteLine("이름 : {0}, 가격 : {1}", i.name, i.price);
}
Console.WriteLine();
//배열 요소에서 이름이 "사과"인 Fruits객체를 검색
Fruits apple = null;
foreach (var i in fruits)
{
if (i.name.Equals("사과"))
{
apple = i;
break;
}
}
if (apple != null)
{
Console.WriteLine("사과는 배열안에 있습니다.");
}
else
{
Console.WriteLine("사과는 배열안에 없습니다.");
}
Console.WriteLine();
//배열요소에서 이름이 "복숭아"인 Fruits객체를 삭제
for (int i = 0; i < fruits.Length; i++)
{
if (fruits[i] != null && fruits[i].name == "복숭아")
{
fruits[i] = null;
//삭제된 요소 뒤에 있는 값들을 앞으로 한칸씩 땡기기
for (int j = i; j < fruits.Length - 1; j++)
{
if (fruits[j + 1] != null)
{
fruits[j] = fruits[j + 1];
fruits[j + 1] = null;
break;
}
}
}
}
foreach (var i in fruits)
{
if (i != null)
{
Console.WriteLine("이름 : {0}, 가격 : {1}", i.name, i.price);
}
}
}
}
}
using System;
namespace Study07
{
public class Fruits
{
public int price;
public string name;
public Fruits()
{
}
public Fruits(int price, string name)
{
this.price = price;
this.name = name;
}
}
}
1)생성자는 만약 객체 생성시 받아야 되는 값이 있으면, 인자 없는 생성자와 인자 있는 생성자 둘 다 만들어 주는게 편하다.
객체를 먼저 만들고 나중에 멤버변수값을 넣어야 하는 경우가 생길수도 있기때문이다.
2) 단순히 배열을 출력만 한다 => foreach
배열 안에서 요소들의 값을 변경할 일이 있다 => for (foreach는 원래있던 값을 변경하거나 할당이 불가능하다)
또한 NullReferenceException (참조값이 가리키는 값이 없을 때 발생) 에러는 언제 어디서는 발생할 수 있기 때문에 무언가를 실행하기 전에 null인지 체크해줄 필요가 있다.
* NullReferenceException : 참조 데이터가 없을 때 발생한다. ArrayIndexOutOfBound 에러와 함께 가장 많이 발생한다.
fruit = null;을 했는데 fruit.name을 출력할려고 하면 이미 null이기 때문에 NullReferenceException을 출력한다.
컴파일 타임에는 발견할 수 없기 때문에 런타임 시간에 디버깅을 통해 어떤 값이 Null인지 체크해야한다.
'Unity > 수업내용(C#)' 카테고리의 다른 글
[3.17] 배열 및 컬렉션 복습 1 (0) | 2021.03.17 |
---|---|
[3.16] List 컬렉션 연습 1 - 수정(주석추가) (0) | 2021.03.16 |
[3.16] 배열 및 클래스 복습 1 (0) | 2021.03.16 |
[3.15] 배열 및 클래스를 이용한 인벤토리 & 상점 (0) | 2021.03.15 |
[3.15] 배열, 클래스 심화 - 인벤토리 구현 (0) | 2021.03.15 |
Comments