C#/수업과제
03/16 컬렉션을 이용 예제
박준희
2021. 3. 16. 18:25
728x90
1. Dictionary를 사용하여 던파 세라샵의 아이템 요소를 추가


Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
new App();
}
}
}
App.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class App
{
public App()
{
//Dictionary<int, Product> 변수 선언
Dictionary<int, Product> dicProducts;
//컬렉션 인스턴스화
dicProducts = new Dictionary<int, Product>();
//Product 생성 ID, 이름, 가격
Product product1 = new Product("증폭 보호권", 12900, 1, eCurrencyType.Sera);
Product product2 = new Product("장비 보호권", 9800, 1, eCurrencyType.Sera);
Product product3 = new Product("칼레이도 박스", 19900, 50, eCurrencyType.Sera);
Product product4 = new Product("칼레이도 박스", 12700, 30, eCurrencyType.Sera);
Product product5 = new Product("칼레이도 박스", 4500, 10, eCurrencyType.Sera);
Product product6 = new Product("칼레이도 박스", 500, 1, eCurrencyType.Sera);
Product product7 = new Product("칼레이도 박스", 500, 1, eCurrencyType.GoldCoin);
Product product8 = new Product("이계 기운의 소멸서", 1900, 1, eCurrencyType.Sera);
//딕셔너리에 요소 추가 (키, 값: Product)
dicProducts.Add(1, product1);
dicProducts.Add(2, product2);
dicProducts.Add(3, product3);
dicProducts.Add(4, product4);
dicProducts.Add(5, product5);
dicProducts.Add(6, product6);
dicProducts.Add(7, product7);
dicProducts.Add(8, product8);
//요소의 키로 검색
Product searchProduct = dicProducts[4];
Console.WriteLine("{0} {1} {2} {3} \n", searchProduct.GetItemName(), searchProduct.GetItemPrice(), searchProduct.GetCurrencyType(),
searchProduct.GetCount());
//foreach문으로 요소 출력
//KeyValuePaire<int, Product>
foreach (KeyValuePair<int, Product> keyValuePair in dicProducts)
{
Console.WriteLine("{0}. {1} {2} {3} {4}", keyValuePair.Key, keyValuePair.Value.GetItemName(), keyValuePair.Value.GetItemPrice(),
keyValuePair.Value.GetCurrencyType(), keyValuePair.Value.GetCount() > 1 ? String.Format("{0}개 셋트", keyValuePair.Value.GetCount()) : String.Format("{0}개", keyValuePair.Value.GetCount()));
}
}
}
}
Product.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public enum eCurrencyType
{
Sera,
GoldCoin
}
public class Product
{
private string itemName;
private int itemPrice;
private int count;
private eCurrencyType currencyType;
public Product(string itemName, int itemPrice, int count, eCurrencyType currencyType)
{
this.itemName = itemName;
this.itemPrice = itemPrice;
this.count = count;
this.currencyType = currencyType;
}
public string GetItemName()
{
return itemName;
}
public string GetItemPrice()
{
return String.Format("{0:#,0}", itemPrice);
}
public int GetCount()
{
return count;
}
public eCurrencyType GetCurrencyType()
{
return currencyType;
}
}
}
2. ArrayList를 사용하여 타입이 다른 객체 삽입 및 출력
던파 파티 맴버 출력


Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
new App();
}
}
}
App.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class App
{
public App()
{
//변수 선언
ArrayList list;
//인스턴스 생성
list = new ArrayList();
//요소 생성
Gunner gunner = new Gunner("눈설탕맛쿠키");
GhostKnight ghostKnight = new GhostKnight("truer");
Knight knight = new Knight("수갑철컹!?");
Priest priest = new Priest("홀리데잇");
//ArrayList에 요소 추가
list.Add(gunner);
list.Add(ghostKnight);
list.Add(knight);
list.Add(priest);
//요소 출력
Console.WriteLine("******파티맴버*******");
foreach(object obj in list)
{
if (typeof(Gunner) == obj.GetType())
{
Gunner character = (Gunner)obj;
Console.WriteLine("{0}", character.GetName());
continue;
}
if (typeof(GhostKnight) == obj.GetType())
{
GhostKnight character = (GhostKnight)obj;
Console.WriteLine("{0}", character.GetName());
continue;
}
if (typeof(Knight) == obj.GetType())
{
Knight character = (Knight)obj;
Console.WriteLine("{0}", character.GetName());
continue;
}
if (typeof(Priest) == obj.GetType())
{
Priest character = (Priest)obj;
Console.WriteLine("{0}", character.GetName());
continue;
}
}
Console.WriteLine("*********************");
}
}
}
Gunner.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class Gunner
{
private string name;
public Gunner(string name)
{
this.name = name;
}
public string GetName()
{
return this.name;
}
}
}
GhostKnight.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class GhostKnight
{
private string name;
public GhostKnight(string name)
{
this.name = name;
}
public string GetName()
{
return this.name;
}
}
}
Knight.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class Knight
{
private string name;
public Knight(string name)
{
this.name = name;
}
public string GetName()
{
return this.name;
}
}
}
Priest.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class Priest
{
private string name;
public Priest(string name)
{
this.name = name;
}
public string GetName()
{
return this.name;
}
}
}
3. List<T>를 사용하여 사이퍼즈 킬 정보 표시


Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
new App();
}
}
}
App.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public class App
{
public App()
{
//변수 선언
List<User> list;
//인스턴스 생성
list = new List<User>();
//요소 생성
User user1 = new User("truer", ePosition.Dealer, 66, 17, 4, 6);
User user2 = new User("제닢울비메이져", ePosition.Supporter, 54, 3, 0, 26);
User user3 = new User("니인생초우자이", ePosition.Dealer, 50, 8, 5, 9);
User user4 = new User("앎", ePosition.Tanker, 48, 3, 0, 23);
User user5 = new User("WEEHIN", ePosition.Tanker, 35, 1, 0, 13);
//ArrayList에 요소 추가
list.Add(user1);
list.Add(user2);
list.Add(user3);
list.Add(user4);
list.Add(user5);
//요소 출력
Console.WriteLine("********************************************");
Console.WriteLine("포지션 레벨 아이디 킬 파괴 도움");
foreach (User user in list)
{
Console.WriteLine("{0} {1} {2} {3} {4} {5}", user.GetPosition(), user.GetLevel(), user.GetName(), user.GetKill(), user.GetDestruction(), user.GetSupport());
}
Console.WriteLine("********************************************");
}
}
}
User.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
public enum ePosition
{
Dealer,
Supporter,
Tanker
}
public class User
{
private string name;
private ePosition position;
private int level;
private int kill;
private int destruction;
private int support;
public User(string name, ePosition position, int level, int kill, int destruction, int support)
{
this.name = name;
this.position = position;
this.level = level;
this.kill = kill;
this.destruction = destruction;
this.support = support;
}
public string GetName()
{
return this.name;
}
public ePosition GetPosition()
{
return this.position;
}
public int GetLevel()
{
return this.level;
}
public int GetKill()
{
return this.kill;
}
public int GetDestruction()
{
return this.destruction;
}
public int GetSupport()
{
return this.support;
}
}
}
728x90