![]() |
1
24
这是C语言的一个特殊设计功能:
IIRC这是为了安全:特别是,为了
编辑:
一个好处是它使
|
![]() |
2
22
“我认为假设null意味着false是相当合理的” 不是在C#。false是一个布尔结构,一个值类型。值类型不能有空值。如果您想完成您所取得的成就,您必须创建特定类型的自定义布尔转换器:
通过以上步骤,我可以:
等。 |
![]() |
3
14
我不同意。通常情况下,“假”的意思是“不”。Null表示“我不知道”;i、 完全不确定。 |
![]() |
4
5
我想到的一件事是,在一个数据类型的实例中,比如int?Int不能为null,所以它们总是求值为true吗?您可以假设int=0为false,但这开始变得非常复杂,因为0是一个有效值(其中可能0的值应该为true,因为程序设置了它),而不仅仅是一个默认值。
|
![]() |
5
5
只需使用if(Convert.ToBoolean(someClass)) http://msdn.microsoft.com/en-us/library/wh2c31dd.aspx
|
![]() |
6
4
据我所知,这是您在动态语言中看到的特性,而C#不是(根据语言规范)
我认为这样假设是不合理的
|
![]() |
7
3
因为null和false是不同的东西。 布尔就是一个很好的例子?福
如果foo的值为true,则其值为true。
这是三个逻辑上独立的条件。
换个角度想想
|
![]() |
8
3
这不是原因。我们知道这一点是因为如果两个被比较的变量恰好是
如果
|
![]() |
9
3
从结构上讲,大多数“不能想到任何技术原因”的人都错了。
代码由CPU运行。
大多数(如果不是全部)CPU都有
,
比特组的解释
也就是说,某些东西在机器代码中不是“相等”、“零”、“更大”、“更小”、“更大或相等”就是“更小或相等”。世上没有
C#是一个例外,因为它是一个间接类型,其中两个可能的值
这是故意的。
但需要注意的是,这样的设计决策
精心制作的
决定,而
传统,直截了当
方法是假设
|
![]() |
10
2
C不象C++那样对参数进行转换。如果希望
|
![]() |
11
1
与PHP、Perl等语言相比,它只是c的类型系统。
条件只接受
至于在另一个注释中提到的C/C++中的空例子,必须说明C和C++都没有布尔类型(AfA+ C++通常有一个BooL的类型转换为int,但这是另一回事),它们也没有空引用,只有null(= & Gt;0)-指针。 当然,编译器设计人员可以实现将任何可为null的类型自动转换为布尔类型,但这会导致其他问题,例如:
假设
这意味着您将有两种不同的bool转换,隐式和显式,它们的行为都不同。
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |