확인 문제
using System;
using System.Collections.Generic;
public class Box<T>
{
public T Value { get; set; }
public void DisplayValue()
{
Console.WriteLine($"Value: {Value}");
}
}
class Program
{
static void Main(string[] args)
{
Box<int> intBox = new Box<int> { Value = 123 };
Box<string> strBox = new Box<string> { Value = "Hello, World" };
Box<DateTime> dateBox = new Box<DateTime> { Value = DateTime.Now };
intBox.DisplayValue();
strBox.DisplayValue();
dateBox.DisplayValue();
}
}
1. 다음 코드에서 제네릭을 사용한 부분을 식별하고, 해당 코드가 제네릭을 사용하지 않았을 때 발생할 수 있는 문제점에 대해 설명하세요.
`class Box<T>` 와 `T Value`에서 제네릭이 사용되었다.제네릭을 사용하지 않게 되면 `int`, `string`, `DataTime`형 타입별로 클래스를 각각 만들어줘야 한다.
2. 아래 코드가 어떤 기능을 하는지, 어떤 방식으로 동작하는지 간단하게 설명해주세요.
public static T Max<T>(T a, T b) where T : IComparable<T> { return a.CompareTo(b) > 0 ? a : b; }
IComparable을 상속받는 클래스들은 Max를 사용할 수 있다.
Max 메서드는 a > b 이면 양수를 반환하므로 a를 반환하고, a <= b 이면 b를 반환한다.
설명 문제
제네릭이란 무엇인가요?
람다식(Lambda Expression)이 무엇인지 설명해주세요.
LINQ란 무엇인가요?
리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.
리플렉션의 단점에 대해 설명해주세요.
실습 문제
💡 [클래스 이름 출력하기]
리플렉션을 사용하여 string을 사용하지 않고 클래스의 이름을 출력해보는 함수를 만들어봅시다.
using System;
using System.Reflection;
public class Character
{
public int Level { get; set; }
public void PrintClassName()
{
// TODO: 리플렉션을 사용하여 클래스의 이름을 출력하는 코드 작성
//
}
}
public class Warrior : Character
{
}
public class Mage : Character
{
}
public class Archer : Character
{
}
class Program
{
static void Main(string[] args)
{
Warrior warrior = new Warrior();
Mage mage = new Mage();
Archer archer = new Archer();
// 리플렉션을 사용하여 클래스 이름 출력
warrior.PrintClassName();
mage.PrintClassName();
archer.PrintClassName();
}
}
반응형
'스파르타 게임개발종합반(Unity) > 기술 면접 대비 꾸준 실습' 카테고리의 다른 글
06. 가비지 컬렉터 - GC(Garbage Collectior) (0) | 2024.07.09 |
---|---|
05. 상속과 인터페이스 (0) | 2024.07.08 |
04. 스택 메모리 vs 힙 메모리 (0) | 2024.07.05 |
03. 콜백, delegate, event (1) | 2024.07.04 |
02. 객체지향 프로그래밍 (0) | 2024.07.03 |
댓글