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