Tag: 投射

在C#中使用IsAssignableFrom和“is”关键字

在尝试学习Unity时 ,我一直看到下面的代码来覆盖MVC中的GetControllerInstance : if(!typeof(IController).IsAssignableFrom(controllerType)) { … } 这似乎是一个基本写作的非常复杂的方式 if(controllerType is IController) { … } 我很欣赏is和IsAssignableFrom之间的细微差别,即IsAssignableFrom不包括IsAssignableFrom转换,但是我正努力去理解这种差异在实际场景中的含义。 什么时候selectIsAssignableFrom over is IsAssignableFrom is ? 在GetControllerExample会有什么不同? if (!typeof(IController).IsAssignableFrom(controllerType)) throw new ArgumentException(…); return _container.Resolve(controllerType) as IController;

如果我在我的C ++项目中使用C风格强制转换,是否值得重构C ++强制转换?

我在我的15K LOC C ++项目中使用C风格的演员,90%的时间在儿童和基础class之间进行演员训练。 即使当我读到使用它们是不好的,而且它们可能导致严重的错误,因为它们不像C ++types那样安全,我仍然感觉使用它们是非常好的和舒适的。 到目前为止,我的项目中还没有遇到一个错误,例如,由于意外错误input了C-Style演员而导致的错误。 有两个主要的原因我没有使用它们: 我还不够了解他们 我不喜欢他们的语法,他们更冗长,更难以阅读 我的问题: (为什么)我应该重构我的项目使用C ++风格的演员? 我为什么要为未来的项目使用C ++风格的演员? 我使用C ++为我提供的所有其他优点,包括虚拟和抽象基类,名称空间,STL等OOP,而不是新types的转换语法。 “ 为什么你不只是用C呢? ”这个说法不适合我。

在Objective-C中,Java的“instanceof”关键字是什么?

我想检查一个对象(如someObject )是否可赋值(可转换)为另一种types的variables(例如SpecifiedType )。 在Java中,我可以写: someObject instanceof SpecifiedType 一个相关的问题是查找一个对象的运行时types是否等于另一个types。 在Java中,我可以写: someObject.getClass().equals(SpecifiedType.class) Objective-C如何做到这一点?

通过void *投射,而不是使用reinterpret_cast

我正在读一本书,我发现不应该直接使用reinterpret_cast ,而是将其与static_cast结合使用void * T1 * p1=… void *pv=p1; T2 * p2= static_cast<T2*>(pv); 代替: T1 * p1=… T2 * p2= reinterpret_cast<T2*>(p1); 但是,我无法find一个解释为什么这比直接演员更好。 如果有人能给我一个解释或指出我的答案,我将非常感激。 提前致谢 ps我知道什么reinterpret_cast用于,但我从来没有看到这是用这种方式

是否有可能分配一个基类对象的派生类引用与明确的types转换在C#中?

是否有可能分配一个基类对象的派生类引用与明确的types转换在C#中? 我试过了,它创build了一个运行时错误。

删除一个空指针是否安全?

假设我有以下代码: void* my_alloc (size_t size) { return new char [size]; } void my_free (void* ptr) { delete [] ptr; } 这安全吗? 或者必须将ptr为char*才能删除?