C#/C#200제
[C#] 14일차 - 94. 일반화 클래스(제네릭 클래스)
반나무
2021. 2. 10. 18:34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A094_GenericClass
{
class MyClass<T>
{
private T[] arr;
private int count = 0;
// 생성자 메소드
public MyClass(int length)
{
arr = new T[length];
count = length;
}
// 매개변수로 받은 값들을 배열로 저장
public void Insert(params T[] args)
{
for (int i = 0; i < args.Length; i++)
arr[i] = args[i];
}
// 객체 arr배열의 요소를 출력
public void Print()
{
foreach (T i in arr)
Console.Write(i + " ");
Console.WriteLine();
}
//
public T AddAll()
{
T sum = default(T); // sum을 default(T)로 초기화
foreach (T item in arr)
sum = sum + (dynamic)item; // dynamic변수는 컴파일 시에 형을 체크하지 않아 에러가 나지않는다.
return sum;
}
}
class Program
{
static void Main(string[] args)
{
MyClass<int> a = new MyClass<int>(10);
MyClass<string> s = new MyClass<string>(5);
a.Insert(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
s.Insert("Tiger", "Lion", "Zebra", "Monkey", "Cow");
a.Print();
s.Print();
Console.WriteLine("a.AddAll() :" + a.AddAll());
Console.WriteLine("s.AddAll() :" + s.AddAll());
}
}
}
반응형