Microsoft MVP성태의 닷넷 이야기
글쓴 사람
csharplearner
홈페이지
첨부 파일
 

AComponent class의 사용자 코드에서 readonly struct를 다음과 같이 가지고 있는 경우,
_operation이 null인 경우가 발생해 제가 추가한 함수들에 모두 null체크가 추가되야하는데요
readonly struct를 제가 올바르게 사용하지 않고 있는걸까요?
간단하게 요약해보면 이런 상황입니다.
해당 struct는 무조건 Operation이 있는 context에서만 생성되고 사라지게끔 해주고 싶었는데 클래스 멤버변수로 못 가지게 막는 방법 등은 없을까요?


public readonly struct ResourceHandle<T>
{
    readonly IAsyncOperation _operation;
    public IsDone => _operation.IsDone;
    public event Action<T> Completed
    {
        add
        {
            _operation.AddCallback(value);
        }
        remove
        {
            _operation.RemoveCallback(value);
        }
    }
    public ResourceHandle(IAsyncOperation op)
    {
        _operation = op;
    }
}

public class AComponent
{
    ResourceHandle<AudioClip> lastHandle;
    Action<T> lastCallback;

    public void LoadAsync(Guid uuid)
    {
        if (!lastHandle.IsDone)
        {
            lastHandle.Completed -= lastCallback;
        }

        Action<AudioClip> lastCallback = (resource)=> {
            // ...
        };

        lastHandle = ResourceService.LoadAssetAsync<T>(uuid);
        lastHandle.Completed += lastCallback;
    }
}








[최초 등록일: ]
[최종 수정일: 2/24/2022]


비밀번호

댓글 작성자
 



2022-02-24 11시43분
질문이 좀 이해가 안 되는데요.

게다가 코드도 대충 짜집기한 것이라서 더 이해가 안 됩니다. 지금 상태에서 답변하면 왠지 계속 핑퐁이 될 것 같은데요, 정상적으로 예제 코드가 컴파일 오류가 발생하지 않는 상황까지는 만든 다음에 다시 질문해 주세요.
정성태

1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...
NoWriterDateCnt.TitleFile(s)
5626연준혁3/21/20225710안녕하세요. [3]
5625jaew...3/18/20226562c# 8.0 도서를 구입한 사람입니다. [1]
5624초보자3/17/20225544람다 캡처 관련 문의 [2]
5623한예지 donator3/15/20225791인터프리터 원리가 궁금합니다. [4]
5622김민아3/8/20225980const와 readonly의 명확한 차이가 이게 맞나요? [2]
5621장성욱3/8/20225684c# 로그 관련 질문 [1]
5620김민아3/7/20225645안녕하세요 비관리 객체를 반환하는 메소드 호출 시 궁금한 점이 있어서 질문드립니다 [2]
5619팡팡이3/3/20226975RSA 문의드립니다. [3]
5618김기헌3/2/20225589안녕하세요 생성자 옆에 this 키워드를 붙여 생성자를 여러 개 호출 시 질문드립니다 [2]
5617Edun2/25/20225726ArgumentOutOrRangeException에러 발생 [2]파일 다운로드1
5616csha...2/24/20225554readonly struct로 선언된 구조체를 특정 클래스에서 멤버변수로 가지는 경우 [1]
5615장성욱2/22/20227837SetThreadAffinityMask를 이용한 쓰레드 지정하는 방법에 대해 궁금합니다. [4]
5614민우2/22/20227059SSL 통신 문의 [6]
5613김인태2/22/20225586서버와 PC 간의 어플리케이션 성능 차이 [1]
5612팬입니다2/20/20225408Kastrel 서버 관련 [1]
5611차가워2/19/20225577stopWatch 늘어짐 문의 [3]
5610차가워2/18/20225475Stopwatch 늘어짐 문제 [1]
5609cs린이2/15/20225824c# 함수의 호출 방식에 대해 궁금합니다! [2]
5608지호2/10/20226207시작하세요 C# 8.0 중 제네릭타입의 IEnumerable [3]파일 다운로드1
5607이로운2/10/20225613안녕하세요. 궁금한게 있어서 질문드립니다. [1]
5605강성봉2/10/20225628TCP PSH flag 패킷 수신 에러 [1]
5604LW2/9/20225825VISUAL STUDIO 2019 ==> 2020 설치시 오류가 생겨서 문의드립니다. [3]
5603김진명2/9/20227050C# 10.0 출간은 언제쯤 계획하고 계신가요? [1]
5602신갑영2/8/20225897윈폼에 대해서 질문 드립니다. [1]
5601김인태2/4/20226121setup project 관련 [7]
5600itkim2/3/20226862윈도우 서버 계정 패스워드 인증 문의 [5]
1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...