错误 1 无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)

if(!Page.IsPostBack){DataClassesDataContextdb=newDataClassesDataContext();varvotes=(f... 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; //这里报错不知道为什么?
}
展开
 我来答
雨月蓝
2012-03-06 · TA获得超过765个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:253万
展开全部
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;
}
嘉奇1234568
2012-08-15 · TA获得超过157个赞
知道答主
回答量:216
采纳率:50%
帮助的人:122万
展开全部
var votes = (from v in db.VoteItem where v.TitleID == (Int32)Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式