Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/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# 可为null的C的行为_C#_Nullable - Fatal编程技术网

C# 可为null的C的行为

C# 可为null的C的行为,c#,nullable,C#,Nullable,在C中 a1和a2结果都是空的。如果有人能解释一下它的工作原理,那就太好了 使现代化 我之所以提出这个疯狂的例子是因为int时的行为?被布尔取代了吗?以及绑定过程。 这段代码不会给出警告,说明表达式的结果总是空的。推断的原因是“我不知道”| int=“我不知道”在哪里作为“我不知道”| true=true 如果我错了,请纠正我首先请注意,这与写作没有什么不同: bool? a1 = null; bool? a2 = true; a1 = a1 | default(bool?); a2 = a2

在C中 a1和a2结果都是空的。如果有人能解释一下它的工作原理,那就太好了

使现代化 我之所以提出这个疯狂的例子是因为int时的行为?被布尔取代了吗?以及绑定过程。

这段代码不会给出警告,说明表达式的结果总是空的。推断的原因是“我不知道”| int=“我不知道”在哪里作为“我不知道”| true=true


如果我错了,请纠正我首先请注意,这与写作没有什么不同:

bool? a1 = null; bool? a2 = true; a1 = a1 | default(bool?); a2 = a2 | default(bool?); 这相当于:

int? a1 = 0   | default(int?);
int? a2 = 100 | default(int?);
自从。自从

int? a1 = 0   | null;
int? a2 = 100 | null;

这就解释了为什么两个值都为null。

首先请注意,这与写入没有什么不同:

bool? a1 = null; bool? a2 = true; a1 = a1 | default(bool?); a2 = a2 | default(bool?); 这相当于:

int? a1 = 0   | default(int?);
int? a2 = 100 | default(int?);
自从。自从

int? a1 = 0   | null;
int? a2 = 100 | null;

这解释了为什么两个值都为空。

这是因为以下原因

int? a1 = null;
int? a2 = null;

顺便说一句,VisualStudio应该抱怨您的表达式总是解析为null。警告。

这是因为以下原因

int? a1 = null;
int? a2 = null;

顺便说一句,VisualStudio应该抱怨您的表达式总是解析为null。警告。

你想做什么?你希望结果是什么?你知道defaultint的值是多少吗?是你知道|是什么意思吗?正如Lippert所说,它是一个数字的OR,“我不知道”是“我不知道”。不管底层类型如何,可空类型的默认值总是空的。bsoundra:你需要在更新中更具体一些。指导原则:a提供原始代码,b提供您所看到的行为,c提供您所期望的,或让您困惑的内容。在整数里?情况很清楚,但可以说,你的更新有点让事情变得一团糟。我感到困惑的一个原因是,我无法构造编译器将接受bool?的工作代码段?。因此,我建议您提供详细信息,我们中的一位将帮助您:-@PrashantGupta我已经做了一些编辑。请看它是否增加了清晰度。你想做什么?你希望结果是什么?你知道defaultint的值是多少吗?是你知道|是什么意思吗?正如Lippert所说,它是一个数字的OR,“我不知道”是“我不知道”。不管底层类型如何,可空类型的默认值总是空的。bsoundra:你需要在更新中更具体一些。指导原则:a提供原始代码,b提供您所看到的行为,c提供您所期望的,或让您困惑的内容。在整数里?情况很清楚,但可以说,你的更新有点让事情变得一团糟。我感到困惑的一个原因是,我无法构造编译器将接受bool?的工作代码段?。因此,我建议您提供详细信息,我们中的一位将帮助您:-@PrashantGupta我已经做了一些编辑。请查看它是否增加了更清晰的内容。如更新中所述,当int被bool替换时,此行为会发生变化,而null | true将因运算符角色的变化而变为true。谢谢。就像更新中提到的那样,当int被bool替换时,这种行为会发生变化,而null | true将通过操作符角色的变化被赋值为true。谢谢