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)이 아닌 값으로 지정하면 컴파일러 경고가 발생합니다.
모든 답변을 삭제하는 중재자에게하지 마십시오. 나는이 답변이 가치를 더한다고 믿으면 삭제하면 단순히 누군가가 당시의 올바른 것을 알지 못하게됩니다. 모든 답변을 삭제 했으므로 여기에 답변을 다시 게시하고 있습니다. “중복”과 관련하여 전송 된 링크는 일부 사람들의 개방 일 뿐이며 공식적인 추천이라고 생각하지 않습니다.
답변
