Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux上c#中函数返回的奇怪bool值_C#_Linux_Mono - Fatal编程技术网

Linux上c#中函数返回的奇怪bool值

Linux上c#中函数返回的奇怪bool值,c#,linux,mono,C#,Linux,Mono,在我的c代码中,我有 bool aBoolVar = csfunction(). CsSuffice()使用pPoNoCK调用库中的C++函数,返回一个布尔值。我用 [return: MarshalAs(UnmanagedType.U1)] 用于布尔值封送处理。这在mono 3.12上运行良好。但是在我把mono升级到4.6之后 if (aBoolVar == true) 仍然成功,但是 aBoolVal.Equals(true) 不断失败。我将bool值的UnmanagedT

在我的c代码中,我有

bool aBoolVar = csfunction(). 

CsSuffice()使用pPoNoCK调用库中的C++函数,返回一个布尔值。我用

[return: MarshalAs(UnmanagedType.U1)] 
用于布尔值封送处理。这在mono 3.12上运行良好。但是在我把mono升级到4.6之后

if (aBoolVar == true) 
仍然成功,但是

aBoolVal.Equals(true) 
不断失败。我将bool值的
UnmanagedType.U1
更改为其他两种类型,但它不起作用。我打印了
Convert.ToInt32(aBoolVar)
,结果是1。但我仍然怀疑这不是1。我想使用developno一点一点地检查
aBoolVar
的内存布局,但在安装developno时遇到了依赖性问题

有谁能帮我找出
aBoolVal.Equals(true)
失败的原因吗?如果有人有使用DevelopMono检查内存布局的良好经验,请让我知道。我将尝试安装DevelopMono并进行调试

提前谢谢


qwang

只是一个想法。在本机C中,booalen由无符号字符数据类型表示。我不确定这与C#和您的案例有什么关系,但您案例中返回的布尔值可能是一个字节,它的值不是0,也不是1,而是其他值?我一直怀疑返回的值既不是0也不是1,但我无法证明。因为我没有一个好的调试工具,我自己找到了答案。c函数返回2。3.12中实现的Equals()比较宽松。因此,它在mono 2.12上返回为真。但是4.6中的Equals()实现更加严格。它返回False。因此,测试总是针对False!只是个主意。在本机C中,booalen由无符号字符数据类型表示。我不确定这与C#和您的案例有什么关系,但您案例中返回的布尔值可能是一个字节,它的值不是0,也不是1,而是其他值?我一直怀疑返回的值既不是0也不是1,但我无法证明。因为我没有一个好的调试工具,我自己找到了答案。c函数返回2。3.12中实现的Equals()比较宽松。因此,它在mono 2.12上返回为真。但是4.6中的Equals()实现更加严格。它返回False。因此,测试总是针对False!