不能在 C# 中使用布尔值作为数据类型作为 SQL Server 的位数据类型的替代品

本文关键字:数据类型 Server 替代品 SQL 布尔值 不能 | 更新日期: 2023-09-27 18:20:15

我知道SQL Server的Bit数据类型等同于 http://msdn.microsoft.com/en-us/library/ms131092.aspx Boolean的C#数据类型

由于Bit可以从 https://msdn.microsoft.com/en-IN/library/ms177603.aspx 中获取值 0、1 或 Null

我正在将 C# 中的变量初始化为 0。

例:

Boolean exmVar = 0;

但是我收到一个错误:

常量值不能转换为布尔值。

仅供参考,我正在将存储过程转换为 C# 代码,因此我只能使用等效Bit

如果可以使用任何其他数据类型,请告诉我。

不能在 C# 中使用布尔值作为数据类型作为 SQL Server 的位数据类型的替代品

Bit

可以取值 01null,而作为Boolean值只能取 truefalse 的值。

为了将位正确映射到数据类型,您需要一个可以取值的Nullable Boolean

这样声明:

Boolean? exmVar;

您可以像这样分配它:

exmVar = true;
exmVar = false;
exmVar = null;

如果要将 0 或 1 赋值给布尔变量,则必须使用 Convert.ToBoolean

exmVar = Convert.ToBoolean(0); // Sets exmVar to false
exmVar = Convert.ToBoolean(1); // Sets exmVar to true

仍然是bool类型,但您需要使用可为空的类型

bool? value = null; // Same as Nullable<bool> value = null

这是 C# 2.0 附带的一项功能,它允许将值类型(结构(作为Nullable<T>使用?作为语法糖。

也就是说,您可以按如下方式声明if语句:

if(value != null)
{
}

。或者还有:

if(value.HasValue)
{
}

。get是使用语法糖的值(即仅按原样使用变量(或访问其值(即 myVar.Value(。

扩展Mathis的答案:

//exmVar=false,exmVar=true,exmVar=null
bool?exmVar =item.HasValue?:item.Value:null;