我有一些构造函数代码,我将许多变量设置为null
,并希望将其缩短为单个语句,但编译失败。
这是我能想到的最简单的例子:
class Bar{}
class Foo{}
class FooBar
{
Foo foo;
Bar bar;
FooBar()
{
foo = bar = null;
}
}
并且编译器输出" Bar无法转换为Foo"。我不明白。这里没有物品。发生了什么事?
答案 0 :(得分:3)
编译器并不关心您是否正在分配空(这不会有问题)。您尝试使用foo = bar
进行非法分配,并且编译器拒绝使用它。
您正在思考"我希望Foo
和Bar
类型的这些变量为空",但编译器会看到"他" s尝试将Bar
分配给Foo
"。
非本地对象变量的默认值是 null
,所以你确定你不会尝试做一些完全没有必要的事情吗? ?
答案 1 :(得分:0)
这是一件基本的事情。如果您有2个int
类型变量,则可以执行
a=b=10
这里发生的事情是10被分配给b而b的值被分配给a。
在您的情况下,foo
和bar
是不同的类型变量,null为bar
分配,但bar
的值无法分配给foo
因为它的另一种类型。所以它会产生错误。