
Question?C# 관련 개념에서 의문이 생긴 것들을 정리한 글이다. 공부를 시작하는 시점부터 했어야 의미가 더욱 컸을 것 같지만, 지금이라도 조금씩 추가해보려고 한다.
해결이 된 경우 노란색으로 아직 안됐을 경우 민트색으로 표시해서 구분!!
C#Singleton 제네릭 구현에서 해당 코드에 에러 발생public class Singleton<T>
{
private static T instance;
public static T Instance
{
get
{
if (instance == null)
{
instance = new Singleton(); // 오류
}
return instance;
}
}
}
A. where T : Singleton<T>, new() 를 사용하여 해결 → 제네릭 형식 제약
public class Singleton<T> where T : Singleton<T>, new()
{
private static T instance;
public static T Instance
{
get { return instance; }
set { instance = value; }
}
public static T GetInstance()
{
if (instance == null)
{
instance = new T();
}
return instance;
}
}
prototype에서 인터페이스 구현을 과정에서 override를 할때 반환형을 object를 써야하는걸까?public interface ProtoType
{
public abstract object Clone();
}
하지만 이렇게 하면 복제를 하기 위해 Clone을 사용할 때마다 언박싱을 해줘야하는데...
Monster monster = new Monster();
Monster monster0 = monster.Clone() as Monster;
A. Prototype<T>로 구현해보자.
public abstract class Prototype<T>
{
public abstract T Clone();
}
public static class Player
{
public static List<int> arrList;
public static void Move
{
arrList.Add(3); // 에러
}
}
A. 참조 타입의 경우 new 키워드로 힙영역에 공간을 생성해야 데이터 저장(할당)이 가능하다.
Property에서 둘의 차이는??public int level { get; private set; }
private int level;
public int Level
{
get { return level; }
}
A. 똑같다. 위가 아래의 약식 표현이라고 생각해도 무방.
Property에서 둘의 차이는??public int value { get; }
public readonly int value;
A. 똑같다.
fisrt와 last node를 확인하는 방법?