我想看看一个变量是否不是某种类型.我知道我可以做到if(picture is XFile)
,但这两个似乎都起到了相反的作用:
if(picture !is XFile)
个
if(picture is! XFile)
个
有什么关系呢?
我想看看一个变量是否不是某种类型.我知道我可以做到if(picture is XFile)
,但这两个似乎都起到了相反的作用:
if(picture !is XFile)
个
if(picture is! XFile)
个
有什么关系呢?
void main() {
var myNum = 5;
if (myNum is! int) {
print('myNum is an integer');
}else{
print('not an integer');
}
}
输出:not an integer
对于编译器,它类似于is !int
void main() {
var myNum = null;
if (myNum is int) {
print('myNum is an integer');
}else{
print('not an integer');
}
}
输出:not an integer
,因为值是null
,所以不是int
.
void main() {
var myNum = null;
if (myNum !is int) {
print('myNum is an integer');
}else{
print('not an integer');
}
}
输出:Uncaught TypeError: Cannot read properties of null (reading 'toString')Error: TypeError: Cannot read properties of null (reading 'toString')
对于编译器来说,它类似于myNum! is
的null safety
这就像如果myNum
是null
,抛出一个error
,而不判断.如果myNum
为not null
,则作为is
工作.
CONCLUSION:
这两种方法似乎都适用于相反的情况:If(图片!是XFile)&;If(图片是!XFILE)
如果我们认为picture
是not null
,那么它是这样的:
if(picture is XFile)
个
if(picture is! XFile)
个
因此,他们应该为相反的方向工作