graylobo
527
2021-07-19 10:46:12
4
176

C# 참조타입뒤에 오는 ? 의미


c#에서 int? a = 3 은 int가 value타입인데

value타입은 null이 올수없으니 명시적으로 ?를 붙여서 null이 할당되도록 하는건 알겠는데요,


위의 object? , string?,Type? 처럼 reference 타입은 ? 를 안붙여도 원래 null 이 올수있는데

왜 굳이 ?를 붙이는지 질문드립니다

구글에 c# question mark operator after type 이렇게 검색해도

value타입에 대한 nullable type 설명만있고

reference타입에 왜 nullable type을 붙이는지에 대한 자료를 찾기가 어렵네요

0
  • 답변 4

  • ramesell
    293
    2021-07-19 11:43:18

    윗분이 말씀하신 nullable 입니다.

    null을 가질 수 없는 타입 int 등.. 데이터 타입을 널을 가질수 있는 타입으로 만든것이죠,,


    클래스와 같은 레퍼런스 타입은 널을 가질 수 있지만 밸류 타입은 널을 가질수 없습니다.

  • graylobo
    527
    2021-07-19 13:45:48
  • plwtcs
    890
    2021-07-21 15:14:04 작성 2021-07-21 15:14:37 수정됨

    추가로 ? 연산자는


    if(OnRaiseError != null)

        OnRaiseError(ex.Message, packet.ClientNo);


    요걸 아래처럼도 한 줄로도 사용가능하죠


    OnRaiseError?.Invoke(ex.Message, packet.ClientNo);



    NullCoalesce 문법을 이용하면 삼항연산자 길이나 if-else가 줄어듭니다.


    DataBuffer = buffer != null ? buffer : new byte[bufferSize];

    요거는 아래처럼..

    DataBuffer = buffer ?? new byte[bufferSize];

  • 로그인을 하시면 답변을 등록할 수 있습니다.