C#空string错误

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

后来在代码中我使用它是这样的:

 typeOfContract = Request.QueryString["type"]; 

typeOfContract行的声明中typeOfContract以下错误:

types'string'必须是非空值types,以便在通用types或方法'System.Nullable <T>'中将其用作参数'T'

有任何想法吗? 基本上,我想在执行操作之前确保QueryString存在"type"

System.String是一个引用types,并已“可空”。

可空<T>和? 后缀是值types,如Int32,Double,DateTime等

你正在变得复杂。 string已经是空的。 你不需要使它可空。 拿出来? 属性types。

string不能是Nullable的参数,因为string不是值types。 string是一个引用types。

 string s = null; 

是一个非常有效的陈述,并没有必要使它可以为空。

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

应该因为as关键字而工作。

string是一个引用types,所以你不需要(也不能)在这里使用Nullable<T> 。 只需将typeOfContract声明为string,并从查询string中获取后,只需检查null即可。 或者,如果要处理与null相同的空string值,请使用String.IsNullOrEmpty。

对于可空,使用? 与所有的C#基元 ,除了string。

下面的页面给出了C#基元的列表: http : //msdn.microsoft.com/en-us/library/aa711900( v = vs.71).aspx