我正在编写 sql server 和 firebird 之间的数据同步应用程序。在 firebird 中,由于历史原因,bool 由“Y”或“N”等域提供。现在我想在 bool 和 char(1) 之间创建转换函数,但它应该接受空值。
如果输入参数为 bool 或 string 并且来自 db 的值为 null,这会导致问题吗?
我怎样才能做到这一点?
我正在编写 sql server 和 firebird 之间的数据同步应用程序。在 firebird 中,由于历史原因,bool 由“Y”或“N”等域提供。现在我想在 bool 和 char(1) 之间创建转换函数,但它应该接受空值。
如果输入参数为 bool 或 string 并且来自 db 的值为 null,这会导致问题吗?
我怎样才能做到这一点?
如果您的输入是三态的,而您的输出是双态的,则需要考虑“默认”。如果您只是谈论在 C# 部分中处理可为空的 bool,则可以使用“bool?” 表示一个可为空的布尔值(它在引擎盖下被装箱)。
你可以设置
bool? flag = false; // or null
稍后您可以使用 ?? 操作员
var result = flag ?? false; // this will return false in case of null