2 回答

TA貢獻1844條經(jīng)驗 獲得超8個贊
var votes = (from v in db.VoteItem where v.TitleID == (Int32)Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();

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