Errore di stringa nullable C #

private string? typeOfContract { get { return (string?)ViewState["typeOfContract"]; } set { ViewState["typeOfContract"] = value; } } 

Più tardi nel codice lo uso in questo modo:

 typeOfContract = Request.QueryString["type"]; 

Sto ottenendo il seguente errore nella dichiarazione della riga typeOfContract affermando:

Il tipo ‘stringa’ deve essere un tipo di valore non annullabile per poterlo utilizzare come parametro ‘T’ nel tipo generico o nel metodo ‘System.Nullable ‘

Qualche idea? Fondamentalmente, voglio assicurarmi che "type" esista in QueryString prima di eseguire un’azione.

System.String è un tipo di riferimento e già “nullable”.

Nullabile e il? il suffisso è per tipi di valore come Int32, Double, DateTime, ecc.

Lo stai rendendo complicato. string è già annullabile. Non è necessario renderlo più annullabile. Tirare fuori il ? sul tipo di proprietà.

la stringa non può essere il parametro di Nullable perché la stringa non è un tipo di valore. La stringa è un tipo di riferimento.

 string s = null; 

è una dichiarazione molto valida e non è necessario renderla nullable.

 private string typeOfContract { get { return ViewState["typeOfContract"] as string; } set { ViewState["typeOfContract"] = value; } } 

dovrebbe funzionare a causa della parola chiave as .

String è un tipo di riferimento, quindi non è necessario (e non può) utilizzare Nullable qui. Basta dichiarare typeOfContract come stringa e semplicemente verificare null dopo averlo ottenuto dalla stringa di query. O utilizzare String.IsNullOrEmpty se si desidera gestire valori di stringa vuoti uguali a null.

Per nullable, usare ? con tutti i primitivi C # , ad eccezione della stringa.

La seguente pagina fornisce un elenco dei primitivi C # : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx