2 回答
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
var votes = (from v in db.VoteItem where v.TitleID == (Int32)Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();
TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
VAR 是.net framework 3.5新出的一個(gè)定義變量的類型
其實(shí)也就是弱化類型的定義。
VAR可代替任何類型
編譯器會(huì)根據(jù)上下文來判斷你到底是想用什么類型的
你使用的 linq的Sum(),最終返回的類型為 int?
所以 var votes ,votes的類型就為int?
值類型后面加問號(hào)表示可為空null(Nullable 結(jié)構(gòu))
Nullable是.NET 2.0中新提供的一種用于標(biāo)明一個(gè)值類型是否可以為空的技術(shù)。
即 votes 可以為空,
一般來說,你的變量VoteCount 聲明的類型應(yīng)該為int
一個(gè)可以為空,一個(gè)不能為空,自然不能互相轉(zhuǎn)換
解決有2
int? VoteCount = votes;//將接受參數(shù)設(shè)為可空int
VoteCount = votes.Vaule;//將votes的值賦值給VoteCount,但votes為空,運(yùn)行時(shí)便會(huì)出錯(cuò)
最佳解決方式
VoteCount = -1;//或者0代表默認(rèn)值
if(votes != null){//判空避免報(bào)錯(cuò)
VoteCount = votes.Vaule;
}
添加回答
舉報(bào)
