错误 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; //这里报错不知道为什么?
} 展开
{
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个回答
展开全部
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;
}
其实也就是弱化类型的定义。
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询