无法在C#中使用Boolean作为数据类型作为SQL Server的Bit数据类型的替代

时间:2015-11-01 11:03:40

标签: c# .net sql-server

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

由于Bit可以从https://msdn.microsoft.com/en-IN/library/ms177603.aspx

取值0,1或Null

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

示例:

Boolean exmVar = 0;

但是我收到错误:

  

常量值无法转换为bool。

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

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

3 个答案:

答案 0 :(得分:1)

Bit值可以取值 0 1 null ,其中Boolean值只能取值 true false

为了正确地将您的位映射到数据类型,您需要Nullable Boolean,其值可以是 true false null < /强>

声明如下:

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

答案 1 :(得分:1)

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

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

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

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

if(value != null)
{
}

......还是:

if(value.HasValue)
{
}

...并且使用语法糖(即仅使用变量)或访问其值(即myVar.Value)得到值。

答案 2 :(得分:0)

扩展Mathis&#39;回答:

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