- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
遇到问题,其中 MyObj.classnameis(TMyClass.classname)
为 true 并且 TMyClass(MyObj)
有效,但 (MyObj as TMyclass).doSomething
抛出转换错误。
我真的不需要任何关于这些垃圾的帮助,尽管如果你想把它放在评论中那就太好了。我只是想知道 Obj as Class
和 Class(Obj)
之间的区别。
最佳答案
as-cast 检查实际的对象类型以确保转换有效,如果无效则引发异常。 “硬转换”(TMyClass(MyObj)
样式)不会进行检查,它只是告诉编译器假设转换是有效的。
如果您遇到 ClassNameIs 返回 true 但 as-cast 失败的情况,这意味着您在两个不同的单元中有两个具有相同名称的不同类,并且 as-cast 试图转换为错误的类。这也意味着您的硬转换正在转换为错误的转换,这可能会导致内存损坏。
运行完整的项目搜索“TMyclass =”以查看多个声明的位置,然后重命名其中一个类或使用完整的定义(obj as MyUnit.TMyClass),以便编译器知道您是哪个类尝试转换到。
关于delphi - 使用 (Object as TClass) 和 TClass(Object) 进行强制转换有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2449790/
我正在尝试做这样的事情: function CreateIfForm ( const nClass : TClass ) : TForm; begin if not ( nClass is TFo
遇到问题,其中 MyObj.classnameis(TMyClass.classname) 为 true 并且 TMyClass(MyObj) 有效,但 (MyObj as TMyclass).doS
我正在尝试创建一个通用的“更新表达式构建器”——一个可以传递的对象,用于指示需要为哪些字段分配什么值。我所做的是: public class UpdateExpression : Dictionary
我对抽象类和接口(interface)具有相同签名方法的这种情况感到困惑。派生类中会有多少个定义?调用将如何解决? public abstract class AbClass { public
我需要我的一些表单类实现相同的功能。 (我已经放弃了将此函数添加到通用锚定表单的想法,因为我不想添加一个对我的大多数表单都无用的函数。) 所以...我考虑使用接口(interface)。 IMyInt
我有以下方法,使用“经典”bcc32 编译器可以很好地编译,但无法使用 Rad Studio 10 Clang 编译器进行编译。 TPersistentClass & __fastcall TServ
我是一名优秀的程序员,十分优秀!