클래스
ArrayList | 크기가 필요에 따라 동적으로 증가되는 배열을 사용하여 IList 인터페이스를 구현합니다. |
Hashtable | 키의 해시 코드에 따라 구성되는 키/값 쌍의 컬렉션을 나타냅니다. |
인터페이스
ICollection | 제네릭이 아닌 모든 컬렉션의 크기, 열거자 및 동기화 메서드를 정의합니다. |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections; //추가
namespace Ex21Collection
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//ArrayList
private void button1_Click(object sender, EventArgs e)
{
textBox1.Clear();
// ArrayList 가변 배열 , 동적으로 크기 변경 가능
// 다양한 자료형의 데이터 처리 가능
ArrayList list = new ArrayList(); // System.Collections; 추가 ctr + .
list.Add(10);
list.Add("문자열 데이터");
list.Add("삭제될 데이터");
list.Add(11.11);
list.Add(DateTime.Now);
list.Insert(1, "추가된 데이터"); // 삽입
for (int i = 0; i < list.Count; i++)
{
textBox1.AppendText(list[i] + "\r\n");
}
textBox1.AppendText("=============================\r\n");
list.Remove(list[3]); // 대상 삭제
list.RemoveAt(list.Count - 1); // 마지막 요소 삭제 , 위치 삭제
for (int i = 0; i < list.Count; i++)
{
textBox1.AppendText(list[i] + "\r\n");
}
textBox1.AppendText("=============================\r\n");
textBox1.AppendText(list.IndexOf(11.11).ToString() + "\r\n"); // 검색 기능
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
Hashtable ht = new Hashtable();
ht.Add(1, "첫번째 데이터");
ht.Add(2, "두번째 데이터");
ht.Add(3, "세번째 데이터");
ht.Add(4, "네번째 데이터");
ht.Add(5, "다섯번째 데이터");
for (int i = 0; i < ht.Count; i++)
{
textBox1.AppendText(ht[i+1] + " \r\n"); // AppendText 위치 값으로 뽑는다(출력)
}
ht.Remove(3);
textBox1.AppendText("=============================\r\n");
ICollection keys = ht.Keys;
foreach (object key in keys)
{
textBox1.AppendText(ht[key] + "\r\n");
}
}
//Generic
private void button3_Click(object sender, EventArgs e)
{
TheObject obj = new TheObject();
obj.Data = 10; // boxing: (int -> object)
int data = (int)obj.Data; // unboxing : (object ->int), 형변환
textBox1.AppendText(data.ToString() + "\r\n");
textBox1.AppendText("=============================\r\n");
// 타입을 <인트, 스트링>으로 하겠다
TheGeneric<int, string> obj2 = new TheGeneric<int, string>();
obj2.Method(10, "테스트 문자열");
textBox1.AppendText(obj2.Data + " / " + obj2.Data2 + "\r\n");
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Clear();
List<int> list = new List<int>();
list.Add(10);
list.Add(20);
list.Add(30);
list.Add(40);
list.Insert(2, 50);
foreach (int data in list)
{
textBox1.AppendText(data + "\r\n");
}
textBox1.AppendText("=============================\r\n");
Dictionary<int, string> dictionary = new Dictionary<int, string>();
dictionary.Add(1, "첫번째 문자열");
dictionary.Add(5, "두번째 문자열");
dictionary.Add(8, "세번째 문자열");
dictionary.Add(14, "네번째 문자열");
dictionary.Add(17, "다섯번째 문자열");
//foreach (int key in dictionary.Keys)
//{
// textBox1.AppendText(dictionary[key] + "\r\n");
//}
//IEnumerator enumerator = dictionary.Keys.GetEnumerator();
//Dictionary<int, string>.KeyCollection.Enumerator enumerator =
// dictionary.Keys.GetEnumerator(); // 형변환이 필요 없다
IEnumerator<int> enumerator =
dictionary.Keys.GetEnumerator();
while (enumerator.MoveNext())
{
//int key = (int)enumerator.Current;
int key = enumerator.Current;
textBox1.AppendText(dictionary[key] + "\r\n");
}
enumerator.Reset();
}
}
}
class TheObject
{
public object Data;
}
class TheGeneric<T, E> // <T, E> 자료형의 대한 예명
{
public T Data;
public E Data2;
public void Method(T data, E data2)
{
this.Data = Data;
this.Data2 = Data2;
}
}
/************
*
* {
* int x;
* Method(x);
* }
*
* Method(object x)
* {
* int y = (int) x * 10;
* }
*
*
***************/
'프로그램 > C# - Study' 카테고리의 다른 글
C# - Ex23IO - 파일입출력( XmlSerializer, SoapFormatter, Serialization ) (0) | 2010.10.13 |
---|---|
11D - 예외처리(Exception) (0) | 2010.09.24 |
10D - 윈폼 (0) | 2010.09.17 |
10D - Ex19WindowsForms3 (0) | 2010.09.17 |
10D - Ex18WindowsForms2 (0) | 2010.09.17 |