Programming

일반 유형 또는 메소드 'System.Nullable'에서 매개 변수 T로 사용하려면 'string'유형은 널 입력 불가능 유형이어야합니다.

procodes 2020. 5. 29. 23:29
반응형

일반 유형 또는 메소드 'System.Nullable'에서 매개 변수 T로 사용하려면 'string'유형은 널 입력 불가능 유형이어야합니다.'


"일반 유형 또는 'System.Nullable'메소드에서 'T'매개 변수로 사용하려면 'string'유형이 널 입력 불가능 값 유형이어야합니다."오류가 발생하는 이유는 무엇입니까?

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Universe;

namespace Universe
{
    public class clsdictionary
    {
      private string? m_Word = "";
      private string? m_Meaning = "";

      string? Word { 
          get { return m_Word; }
          set { m_Word = value; }
      }

      string? Meaning { 
          get { return m_Meaning; }
          set { m_Meaning = value; }
      }
    }
}

코드의 모든 장소 string대신에 사용하십시오 string?.

Nullable<T>타입 T는 예를 들면, 비 - 널 값 유형 것을 요구 int하거나 DateTime. 같은 참조 유형 string은 이미 null 일 수 있습니다. 같은 것들을 가능하게 아무 소용이 없을 것 Nullable<string>이 허용되도록합니다.

또한 C # 3.0 이상을 사용하는 경우 자동 구현 된 속성 을 사용하여 코드를 단순화 할 수 있습니다 .

public class WordAndMeaning
{
    public string Word { get; set; }
    public string Meaning { get; set; }
}

string참조 유형, 클래스입니다. 만 사용할 수 있습니다 Nullable<T>또는 T?비 - 널 (NULL)와 C # 문법 설탕 과 같은 유형 intGuid.

특히, string참조 형식과 마찬가지로 형식의 식은 string이미 null 일 수 있습니다.

string lookMaNoText = null;

System.String은 이미 널 입력 가능합니다. (string? myStr)이 잘못되었다고 선언 할 필요는 없습니다.


매우 구체적인 이유로 Type Nullable<int>은 커서를 Nullable에 놓고 F12를 누르십시오. 메타 데이터가 이유를 제공합니다 (구조 제한 조건 참고).

public struct Nullable<T> where T : struct
{
...
}

http://msdn.microsoft.com/en-us/library/d5x73970.aspx


다가오는 C # 버전 인 8에서는 답이 사실이 아닙니다.

All the reference types are non-nullable by default 실제로 다음을 수행 할 수 있습니다.

public string? MyNullableString; 
this.MyNullableString = null; //Valid

하나,

public string MyNonNullableString; 
this.MyNonNullableString = null; //Not Valid and you'll receive compiler warning. 

The important thing here is to show the intent of your code. If the "intent" is that the reference type can be null, then mark it so otherwise assigning null value to non-nullable would result in compiler warning.

More info

참고URL : https://stackoverflow.com/questions/9236468/the-type-string-must-be-a-non-nullable-type-in-order-to-use-it-as-parameter-t

반응형