Tag: 铸造

即使没有空检查,使用“as”而不是cast是否有意义?

在开发博客,在线代码示例和(最近)甚至是一本书中,我一直在这样的代码上磕磕绊绊: var y = x as T; y.SomeMethod(); 或者更糟的是: (x as T).SomeMethod(); 这对我来说没有意义。 如果你确定x是Ttypes,你应该使用直接转换: (T)x 。 如果你不确定,你可以使用as但是在执行一些操作之前需要检查null 。 上述代码所做的就是将一个(有用的) InvalidCastException变成一个(无用的) NullReferenceException 。 我是唯一一个认为这是对as关键字的公然滥用吗? 还是我错过了明显的东西,上面的模式实际上是有道理的?

我可以假设(布尔)真的==(INT)1为任何C + +编译器?

我可以假设(bool)true == (int)1为任何C + +编译器?

在Java中投射对象

我对于在Java中投入对象意味着什么感到困惑。 假设你有… Superclass variable = new Subclass object(); (Superclass variable).method(); 这里发生了什么? variablestypes是否改变,或者variables内的对象是否改变? 非常困惑。

更改Pandas中列的数据types

我想将一个表格(表示为列表清单)转换为Pandas DataFrame。 作为一个非常简单的例子: a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 什么是最好的方式将列转换为适当的types,在这种情况下,列2和3为浮动? 有没有办法在转换为DataFrame时指定types? 或者是最好先创buildDataFrame,然后遍历列来更改每列的types? 理想情况下,我想以dynamic的方式做到这一点,因为可以有数百个列,我不想明确指定哪些列是哪种types。 我只能保证每列都包含相同types的值。

比较string与整数给出奇怪的结果

我真的很困惑,为什么这个操作的作品。 有人可以解释吗? $test1 = "d85d1d81b25614a3504a3d5601a9cb2e"; $test2 = "3581169b064f71be1630b321d3ca318f"; if ($test1 == 0) echo "Test 1 is Equal!?"; if ($test2 == 0) echo "Test 2 is Equal!?"; // Returns: Test 1 is Equal!? 澄清,我想比较string"0" $testvariables。 我已经知道修复代码,我可以附上(我应该有)在0 我想知道这是一个PHP错误,服务器错误,或者某种有效的操作。 根据http://us3.php.net/types.comparisons这不应该工作。 编辑:划痕,显然它确实提到,string和0之间的松散比较是真实的。 但我仍然不知道为什么。 编辑2:我已经修改了我的问题,为什么$test2值"3581169b064f71be1630b321d3ca318f"不起作用?

将Object数组转换为Integer数组错误

下面的代码有什么问题? Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a; 代码在最后一行有以下错误: 线程“main”中的exceptionjava.lang.ClassCastException:[Ljava.lang.Object; 不能投给[Ljava.lang.Integer;

static_cast <>和C风格铸造有什么区别?

有什么理由更喜欢static_cast<>比C风格铸造? 他们是否等同? 他们有什么样的速度差异?

如何在swift中将自我投射到UnsafeMutablePointer <Void>types

在调用下面的代码时,试图快速地将“self”传递给C函数: var callbackStruct : AURenderCallbackStruct = AURenderCallbackStruct.init( inputProc: recordingCallback, inputProcRefCon: UnsafeMutablePointer<Void> ) 在这里将“self”转换为UnsafeMutablePointertypes的理想方式是什么?

何时使用reinterpret_cast?

我有点困惑reinterpret_cast vs static_cast的适用性。 从我读过的一般规则来看,当编译时可以解释types的时候,使用静态types转换( static 。 这是C ++编译器内部用于隐式强制转换的强制转换。 reinterpret_cast s适用于两种情况,将整数types转换为指针types,反之亦然,或将一种指针types转换为另一种。 我得到的一般想法是不可移植的,应该避免。 我有点困惑的地方是我需要的一个用法,我从C调用C ++,C代码需要保持C ++对象,所以基本上它保留了一个void* 。 应该使用什么转换来在void *和Classtypes之间进行转换? 我看到static_cast和reinterpret_cast用法? 虽然从我读过的东西看来, static会更好,因为在编译时可以发生这种情况? 虽然它说使用reinterpret_cast从一个指针types转换到另一个?

const_cast是否安全?

我无法find关于const_cast很多信息。 我能find的唯一信息(堆栈溢出)是: const_cast<>()用于添加/删除variables的const(ness)(或volatile)。 这让我紧张。 可以使用const_cast导致意外的行为? 如果是这样,什么? 或者,什么时候可以使用const_cast ?