일반 유형 또는 메소드 '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 # 문법 설탕 값 과 같은 유형 int
및 Guid
.
특히, 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.
'Programming' 카테고리의 다른 글
SQL Server에서 사용자와 로그인의 차이점 (0) | 2020.05.29 |
---|---|
다른 보존 정책이 내 주석에 어떤 영향을 줍니까? (0) | 2020.05.29 |
파이썬은 해석되거나 컴파일됩니까, 아니면 둘 다입니까? (0) | 2020.05.29 |
Mockito : 개인 @Autowired 필드에 실제 객체 주입 (0) | 2020.05.29 |
Ruby on Rails 프로덕션 로그 회전 (0) | 2020.05.29 |