C# 如何为char设置DBnull值

C# 如何为char设置DBnull值,c#,C#,我正在处理从数据库中获取记录的应用程序。但当获取值的char数据类型为null时,它会显示错误。 这是我的密码: SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { lstServiceCall_Activity.Add(new OpportunityActivity() { Recontact = C

我正在处理从数据库中获取记录的应用程序。但当获取值的char数据类型为null时,它会显示错误。 这是我的密码:

SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            lstServiceCall_Activity.Add(new OpportunityActivity()
            {
                Recontact = Convert.IsDBNull(reader["Recontact"]) ? (DateTime?)null : Convert.ToDateTime(reader["Recontact"]),
                endDate = Convert.IsDBNull(reader["endDate"]) ? (DateTime?)null : Convert.ToDateTime(reader["endDate"]),
                Details = (reader["Details"]) == DBNull.Value ? null : Convert.ToString(reader["Details"]),
                Location = (reader["Location"]) == DBNull.Value ? 0 : Convert.ToInt32(reader["Location"]),
                CardCode = (reader["CardCode"]) == DBNull.Value ? null : Convert.ToString(reader["CardCode"]),
                Action = Convert.ToChar(reader["Action"]),
                Priority = Convert.ToChar(reader["Priority"]),
                CntctType = Convert.ToChar(reader["CntctType"]),
                assignedTo = Convert.ToString(reader["AttendUser"])
            }
            );
        }       
对于char,如何设置dbnull值。
请给出一些建议。

您不能将
字符设置为
,因此您必须在
字符之后添加
使其为空,或者使用空终止符作为“空”字符的标识符:

char? canBeNull = null;

char nullTerminated = '\0';
你选择哪个选项取决于你,但我会选择选项1,因为这清楚地表明了你对这个变量的意图

所以最终的结果是这样的:

char? Priority = reader["Priority"] != DBNull.Value
                 ? Convert.ToChar(reader["Priority"])
                 : (char?)null;

像这样使用。

char是一种值类型。无法设置为null,他确实专门要求DBNull,这使得唯一的选项是将其声明为对象。他从
SqlDataReader
读取它,这使得需要将
DBNull.Value
转换为有用的内容。
Action  = (reader["Action"]) == DBNull.Value ?'\0' : Convert.ToChar(reader["Action"]),