我正在尝试运行以下代码:
classA = classD;
将classA
中的值分配给classD
(该变量是从另一个名为'classC'的类共享的。)
上面的行通常在C ++中工作,但在C#中它返回错误!这可能在C#?
答案 0 :(得分:2)
在评论A : D
中,所有A
都是D
,但并非所有D
都必须A
。
所以有两个变量:
A classA;
D classD = ...
我们需要
classA = (A) classD;
这会进行类型检查,以确认特定classD
实际上也是A
。如果是这种情况(或null
)则分配成功;否则会发生异常。
这是为了防止您为classA
分配实际上并非A
的内容。
注意它是另一种方式隐含的,因为编译器知道它是有效的:
classD = classA; // always valid - no type check
答案 1 :(得分:0)
如果您要求可以从不同类的实例中复制相同名称的属性,则为no。
说类classA = classB
类层次结构中不相关的类会导致类型错误。如果它们是相关的,那么您所做的只是更改变量classA
的值,而不是复制任何内容。