![]() |
1
6
您只能隐式地将对象强制转换为它们继承自或实现的类型-因为
根据您的要求,您可以通过编写
explicit conversion operator
创建一个
|
![]() |
2
4
你为什么要先把它扔给一个头儿?如果iHeaderRow生成了HeaderRow实现的API,那么您应该能够使用定义的方法对iHeaderRow“对象”执行操作。 接口的要点是,您可以将不同对象的分组视为类似的类型。不是这样,您就可以在没有通过继承链接的类之间强制转换不同的对象。 |
![]() |
3
2
首先,你为什么要做这么奇怪的演员?对于你想做的事情,可能还有另一种设计。
第二,你不能做这个演员的原因是因为一个RAWROW
不是
头尾它唯一的保证就是它能实现
想象一下你的课程是这样的:
现在,如果你这样做,你就没事了:
但试一下这个尺寸:
这就是为什么你不能把它扔到继承树的外面。 |
![]() |
4
1
除非一个继承自另一个,否则不能将ObjectRawrow强制转换为HeaderRow。 接口与之无关。 考虑:
|
![]() |
5
1
除非类型之间存在继承关系,否则无法进行此强制转换。如果这不可能,那么最好创建一个显式转换运算符,允许您将一个类型转换为另一个类型。 如果确实创建了显式转换,您应该理解这将比强制转换慢,因为您将调用一个可以工作的方法,而不是强制转换,后者只更改引用类型,不会更改堆上的任何内存。 考虑这个不编译的示例:
因为类型之间没有继承关系,也没有从
但是添加显式转换允许它编译:
|
![]() |
6
0
如果对象实际上是某个类的实例(或从该类派生),则只能将实例强制转换为该类。 不可能将类A的实例强制转换为完全不相关的类B(这正是您要做的),即使它们实现相同的接口。 |
![]() |
7
0
你可以使用
explicit keyword
创建在尝试从中强制转换时将调用的方法
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |