C#-在';int';及<;空>;
我得到这个错误: 无法确定条件表达式的类型,因为在“int”和之间没有隐式转换C#-在';int';及<;空>;,c#,C#,我得到这个错误: 无法确定条件表达式的类型,因为在“int”和之间没有隐式转换 我发现了与此类似的问题,但不理解它们的解决方案。您正在强制转换播放列表。行[0][“Playlist\u img\u ID”]为int,但您有一个三元运算(?:),其中另一个操作数为null int和null对于三值运算不“兼容”。您应该使用可空的int?类型 而不是: static public string CreatePlaylist(int userId, string playlistName, int p
我发现了与此类似的问题,但不理解它们的解决方案。您正在强制转换播放列表。行[0][“Playlist\u img\u ID”]为int,但您有一个三元运算(?:),其中另一个操作数为null
int
和null
对于三值运算不“兼容”。您应该使用可空的int?
类型
而不是:
static public string CreatePlaylist(int userId, string playlistName, int playlistImgId)
{
DataTable playlistTable = Dal.CreatePlaylist(userId, playlistName, playlistImgId);
Playlist p = new Playlist((int)playlistTable.Rows[0]["UserID"]);
p.PlaylistName = playlistTable.Rows[0]["Playlist_Name"] == DBNull.Value ? null : (string)playlistTable.Rows[0]["Playlist_Name"];
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int)playlistTable.Rows[0]["Playlist_img_ID"];
return new JavaScriptSerializer().Serialize(p);
}
做:
参见Is
p.playlimg
anint
或anint?
?如果是第一个,将null
更改为0
,如果是第二个,将(int)
更改为(int?
,因为我们的答案基本相同,所以我删除了我的答案,并对你的答案进行了投票。你似乎比我更需要声誉积分。如果playlimg
被声明为int
,该怎么办?这只会引发另一个编译错误。最好等到我们有足够的信息,而不是guess@Camilo,你说得对。你的评论更准确。
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int)playlistTable.Rows[0]["Playlist_img_ID"];
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int?)playlistTable.Rows[0]["Playlist_img_ID"];