错误 1 无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)if (!Page.IsPostBack){DataClassesDataContext db = new DataClassesDataContext();var votes = (from v in db.VoteItem where v.TitleID == Int32.Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();VoteCount =votes; //这里报错不知道为什么?}
2 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
var votes = (from v in db.VoteItem where v.TitleID == (Int32)Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();
哔哔one
TA贡献1854条经验 获得超8个赞
VAR 是.net framework 3.5新出的一个定义变量的类型
其实也就是弱化类型的定义。
VAR可代替任何类型
编译器会根据上下文来判断你到底是想用什么类型的
你使用的 linq的Sum(),最终返回的类型为 int?
所以 var votes ,votes的类型就为int?
值类型后面加问号表示可为空null(Nullable 结构)
Nullable是.NET 2.0中新提供的一种用于标明一个值类型是否可以为空的技术。
即 votes 可以为空,
一般来说,你的变量VoteCount 声明的类型应该为int
一个可以为空,一个不能为空,自然不能互相转换
解决有2
int? VoteCount = votes;//将接受参数设为可空int
VoteCount = votes.Vaule;//将votes的值赋值给VoteCount,但votes为空,运行时便会出错
最佳解决方式
VoteCount = -1;//或者0代表默认值
if(votes != null){//判空避免报错
VoteCount = votes.Vaule;
}
添加回答
举报
0/150
提交
取消