1
40
C只有文字
C要求您在声明中非常明确,因为它是一种强类型语言,而不是在需要时可以进行隐式转换的JavaScript。
重要的是要注意,“强类型”并不是C不隐式转换为“真实/错误”值的原因。该语言有意避免其他编译语言(如C++)的缺陷,其中某些值可以是真的,比如
|
2
22
默认情况下,C仅提供
但是,通过实现
下面是
如果您执行
|
3
15
您的问题的正确答案见C 3.0规范第7.19节,您可以在互联网上轻松找到。为方便起见,相关文本如下:
除了bool本身之外,没有其他类型可以通过内置转换隐式转换为bool,但当然,用户可以定义到bool的用户定义隐式转换。 |
4
13
简短回答: C中:
其他一切都不是布尔值。 |
5
11
这样的代码将(并且应该)无法编译。如果您特别想重写该行为,可以创建一个 implicit conversion 布尔运算。像这样:
我认为这是一个糟糕的实践,因为对于一个不熟悉您的项目的编码人员来说,还不清楚是什么逻辑提供了布尔转换。更惯用的方法是通过静态助手函数显式地告诉读者代码在做什么,就像内置的字符串类那样:
代码只写一次,而且经常读;优化可读性。 |
6
3
if语句计算可转换为/等于/返回布尔值或布尔值本身的值…像obj一样检查空值!=null是这样一个表达式, 只有当obj能够转换为bool时,“if(obj)”才能工作,如果它为空则不工作。 |
7
3
前面的答案是正确的。但是,我有一个扩展方法,在一些罕见的情况下使用它:
关于这方面的一些注意事项:
|
8
0
如果
|
9
0
你可以通过扩展方法来定义你自己的真实和错误。
所以你可以这样做: if(customerList.falsy())引发新异常(“不能为空。”); |
10
-5
C是一种静态类型的语言,也就是说,对象的类型在设置它是什么时很重要。 例如,“4”!= 4。 然而,JavaScript是一种动态类型化语言,因此类型的重要性很小。 所以在javascript中,“4”==4。 “真实”值是恰好满足x==true的值,而“虚假”值则不满足。 如果没有类型安全,某些特性(如重载)将产生不可预测的行为。 更多信息,您可以看到 here . |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |