게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C# 제네릭 초기값의 암시적 변환에 대해서..
게시물ID : programmer_2636짧은주소 복사하기
작성자 : 이촉즉발
추천 : 1
조회수 : 498회
댓글수 : 2개
등록시간 : 2014/04/14 02:22:45
Undo, Redo 기능을 다시 만들고 있습니다.
람다 식 안에서는 ref를 못 쓴다거나 제네릭을 쓰면 포인터를 못 쓴다는것 등등 귀찮은 제약이 많아 깔끔하게 만들기가 힘드네요..

public class AutoWrite<T>
{
    T value,
      memory;
    public AutoWrite(T ivalue)
    {
        value = ivalue;
        memory = ivalue;
    }
    public T Get()
    {
        return value;
    }
    public void Set(MyClass iowner, T ivalue, string name)
    {
        if (예외처리)
        {
            memory = value;
            value = ivalue;
            return;
        }
        //Undo, Redo 입력중-
    }
}
public class STAGE_INFO : MyClass
{
    AutoWrite<int> _nLevel = new AutoWrite<int>(1);
    //AutoWrite<int> _nLevel = 1; 이렇게 초기화할 수 있도록 만들어주는 방법?
    public int nLevel
    {
        get { return _nLevel.Get(); }
        set { _nLevel.Set(this, value, "Set Level"); }
    }
}

만약 저 클래스를 쓰지 않는다면

public class MyClass
{
    //~~~
    public void SetValue<T>(Action<T> action, T value, T memoryR, string name)
    {
        //예외처리, Undo, Redo 기록-
    }
    //~~~
}

public class STAGE_INFO : MyClass
{
    int _nLevel = 1;
    public int nLevel
    {
        get { return _Enter_level; }
        set { SetValue((a) => _Enter_level = a, value, _Enter_level,  "Set Enter_level"); }
    }
}

이런식으로 매번 람다식을 적어줘야 되는데, 역시 겉보기에도 좀 이상하고 계속 적기도 귀찮아서 첫 번째 방법을 사용하려고 합니다.
주석부분(AutoWrite<int> _nLevel = 1;)처럼 제네릭으로 int를 받을 경우 int값으로 초기화할 수 있는 방법은 없을까요?   
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호