C # 널 입력 가능 문자열 오류
private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
나중에 코드에서 다음과 같이 사용합니다.
typeOfContract = Request.QueryString["type"];
typeOfContract줄을 선언 할 때 다음과 같은 오류가 발생합니다 .
일반 유형 또는 메소드 'System.Nullable <T>'에서 매개 변수 'T'로 사용하려면 'string'유형이 널 입력 불가능 값 유형이어야합니다.
어떤 아이디어? 기본적으로, 나는 행동을 수행하기 전에 그것이 "type"존재 하는지 확인하고 싶습니다 QueryString.
System.String은 참조 유형이며 이미 "널링 가능"합니다.
Nullable <T> 및? 접미사는 Int32, Double, DateTime 등과 같은 값 유형에 사용됩니다.
당신은 그것을 복잡하게 만들고 있습니다. string이미 nullable입니다. 더 널 입력 가능 하게 만들 필요는 없습니다 . ?속성 유형을 가져옵니다 .
string은 값 유형이 아니므로 string은 널 입력 가능 매개 변수가 될 수 없습니다. 문자열은 참조 유형입니다.
string s = null;
매우 유효한 명령문이므로 널 입력 가능하게 할 필요가 없습니다.
private string typeOfContract
{
get { return ViewState["typeOfContract"] as string; }
set { ViewState["typeOfContract"] = value; }
}
as 키워드 때문에 작동해야 합니다.
문자열은 참조 유형이므로 Nullable<T>여기서 사용할 필요가 없으며 사용할 수 없습니다 . typeOfContract를 문자열로 선언하고 쿼리 문자열에서 null을 가져온 후 null을 확인하십시오. 또는 null과 같은 빈 문자열 값을 처리하려면 String.IsNullOrEmpty를 사용하십시오.
널 입력 가능 ?의 경우 문자열을 제외한 모든 C # 프리미티브 와 함께 사용 하십시오 .
다음 페이지는 C # 프리미티브 목록을 제공합니다 . http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).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.
여기서 중요한 것은 코드의 의도를 보여주는 것입니다. "의도"가 참조 유형이 널 (null) 일 수있는 경우, 널 (NULL) 값을 널 (null)이 아닌 값으로 지정하면 컴파일러 경고가 발생합니다.
모든 답변을 삭제하는 중재자에게하지 마십시오. 나는이 답변이 가치를 더한다고 믿으며 삭제하면 누군가가 당시의 올바른 것을 알지 못하게됩니다. 모든 답변을 삭제 했으므로 여기에 답변을 다시 게시하고 있습니다. "중복"과 관련하여 전송 된 링크는 일부 사람들의 개방 일 뿐이며 공식적인 추천이라고 생각하지 않습니다.
참고 URL : https://stackoverflow.com/questions/187406/c-sharp-nullable-string-error
'IT' 카테고리의 다른 글
| Visual Studio에서 누락 된 Microsoft RDLC 보고서 디자이너 (0) | 2020.06.24 |
|---|---|
| JavaScript를 사용하여 Twitter Bootstrap 3의 반응 형 중단 점을 감지하는 방법은 무엇입니까? (0) | 2020.06.24 |
| 필드에 NULL이 포함 된 경우 MySQL CONCAT는 NULL을 반환합니다. (0) | 2020.06.24 |
| Xcode 6 iPhone 시뮬레이터 응용 프로그램 지원 위치 (0) | 2020.06.24 |
| 프레임 워크 대 라이브러리 대 IDE 대 API 대 SDK 대 툴킷의 차이점은 무엇입니까? (0) | 2020.06.24 |