VoteCount =votes; //这里报错不知道为什么?

错误 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; //这里报错不知道为什么?
}

德玛西亚99
浏览 146回答 2
2回答

婷婷同学_

var votes = (from v in db.VoteItem where v.TitleID == (Int32)Parse(Request.QueryString["titleid"].ToString()) select v.ItemCount).Sum();

哔哔one

VAR 是.net framework 3.5新出的一个定义变量的类型其实也就是弱化类型的定义。VAR可代替任何类型编译器会根据上下文来判断你到底是想用什么类型的你使用的 linq的Sum(),最终返回的类型为 int?所以 var votes ,votes的类型就为int?值类型后面加问号表示可为空null(Nullable 结构)Nullable是.NET 2.0中新提供的一种用于标明一个值类型是否可以为空的技术。即 votes 可以为空,一般来说,你的变量VoteCount 声明的类型应该为int一个可以为空,一个不能为空,自然不能互相转换解决有2int? VoteCount = votes;//将接受参数设为可空intVoteCount = votes.Vaule;//将votes的值赋值给VoteCount,但votes为空,运行时便会出错最佳解决方式VoteCount = -1;//或者0代表默认值if(votes != null){//判空避免报错VoteCount = votes.Vaule;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript