Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
C# 我有一个返回字符串的方法,但是变量的类型是nullable boolean_C#_C# 4.0 - Fatal编程技术网

C# 我有一个返回字符串的方法,但是变量的类型是nullable boolean

C# 我有一个返回字符串的方法,但是变量的类型是nullable boolean,c#,c#-4.0,C#,C# 4.0,我在以下内容中遇到生成错误: protected override string SHow() { return _type ? "Y" : "N"; } \u类型属于可为null的bool类型。我知道“不能从?bool转换为bool” 您可以帮助解决吗?可为null的类型使用value属性提供对其基础值的访问 return\u type.HasValue&&u type.Value?&Y:“N” 好的,编辑以返回null const string trueValue = "True"

我在以下内容中遇到生成错误:

protected override string SHow()
{
    return _type ? "Y" : "N";
}
\u类型
属于可为null的bool类型。我知道“不能从?bool转换为bool”


您可以帮助解决吗?

可为null的类型使用value属性提供对其基础值的访问

return\u type.HasValue&&u type.Value?&Y:“N”

好的,编辑以返回null

const string trueValue = "True";
const string falseValue = "False";

return _type.HasValue ? (_type.Value ? trueValue : falseValue) : null;
使用


如果bool?有值,那么它确实是true或false。此外,当我们想要访问值时,而不是在比较值时,需要nullable.HasValue。因此,以下操作也将起作用:

protected override string SHow()
{ 
    string result = null;
    if(_type==true)
        result = "Y"; // has value & value is true
    else if (_type==false)
        result="N"; // has value & value is false
    return result; // retuing null if no value
}
语句“_type==true”永远不会失败或给您一个编译错误,因为编译器不仅检查null,还检查true或false,并且仅当_type不为null且值为true时才返回true。
任何可为null的基元类型的相等比较的行为方式相同,因此比较时不需要进行null.HasValue检查。

它不知道当_-type为null时应返回哪个值。我做了如下操作,它是否有效?无编译错误。返回(_-type==null)?null:Convert.ToString(_-type);但是,有任何副作用吗?这也有效。.HasValue相当于比较null。但是,这里不需要Convert.ToString(),因为它将返回“true”或“false”“,而你没有办法控制它。另外,在您的示例中,您已经确保了_type不是null,因此最好传入_type.Value,以避免在Convert.ToString()中进行冗余检查。我基本上希望在没有值时发送null,如果值为true,则发送yes,如果值为false,则发送no。那么我上面的代码行是否正确?请帮忙啊,我明白了。就我个人而言,我仍然希望返回显式值,而不是依赖Convert.ToString()始终以相同的方式运行。谢谢,那么在这种情况下,您能更正我的代码吗?发送空。我的意思是你可以在你的ansIt中更新,当_type为null时会抛出异常。检查_type是否为null,然后返回你喜欢的内容
protected override string SHow()
{ 
    string result = null;
    if(_type==true)
        result = "Y"; // has value & value is true
    else if (_type==false)
        result="N"; // has value & value is false
    return result; // retuing null if no value
}