首页 > 解决方案 > C# - '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);

}

我收到此错误:

无法确定条件表达式的类型,因为 'int' 和 <null> 之间没有隐式转换

我发现了类似的问题,但不明白他们的解决方案。

标签: c#

解决方案


您正在转换playlistTable.Rows[0]["Playlist_img_ID"]为 int,但是您有一个三元运算 (?:),其中您将 null 作为另一个操作数。

int并且null对于三元运算不“兼容”。您应该使用可为空的int?类型。

代替:

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"];

请参阅Nullable<value> 类型的条件运算符赋值?


推荐阅读