Tag: 空的

微软更喜欢虚假价值?

我正在读Jon Skeet的书。 (#4) 但有一件事(其中包括)引起了我的注意: 话题:布尔? 他在一张表中写道:( X,Y是bool?) X | Y | X & Y ————————— true null null 好吧…所以null是决定的人。 bool操作数在这里失去了。 X | Y | X & Y ————————— false null false 为什么? 为什么这里的bool操作数正在考虑中,而在之前的样本中,是谁决定了结果? 似乎真假在不同的地方有朋友…. 🙂

三元运算符VB vs C#:为什么解决Nothing为零?

我只是在脚下射击,想知道是否有实际的理由让这种情况成为可能。 无论如何,这个问题可以留在未来的脚射手的方便。 假设我们在vb.net中有一个可以为null的值: Dim i as Integer? 我们希望根据条件为其分配值,并使用三元运算符,因为它非常简洁和东西: i = If(condition(), Nothing, 42) 也就是说,如果条件为true ,则使用可空性,否则使用该值。 射击发生的时间点。 由于没有明显的原因,VB编译器决定Nothing和Integer的公共基类型是Integer ,此时它会以静默方式将语句转换为: i = If(condition(), 0, 42) 现在,如果您要在C#中执行此操作: i = (condition()) ? null : 42; 您会立即收到编译器错误,指出与int不能很好地混合。 这很棒,因为这次我采用了C#方式,我的脚会更健康。 为了编译,你必须明确地写: i = (condition()) ? null : (int?)42; 现在,您可以在VB中执行相同操作并获得正确的null-ness: i = If(condition(), Nothing, CType(42, Integer?)) 但这需要首先拍摄你的脚。 没有编译器错误,也没有警告。 那就是Explicit On和Strict On 。 所以我的问题是,为什么? […]