问题标签 [casting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 编译器无法转换受约束的泛型类型
我有一个具有通用类型“G”的类
在我的班级模型中,我有
假设我有这样的方法
编译器在第 1 行报告一个错误:
但是第 3 行工作正常。我可以通过执行第 5 行中编写的代码来解决这个问题。
我想知道的是为什么编译器会在第 1 行报告错误,而不是在第 3 行报告错误,因为据我所知,它们是相同的。
编辑:恐怕我可能会遗漏一些重要的框架逻辑
edit2:虽然编译器错误的解决方案很重要,但我的问题是为什么编译器在第 1 行而不是在第 3 行报告错误。
php - PHP货币字符串转换为整数错误
我有一个小型金融应用程序,前端是 PHP,后端是 MySQL。我有古老的偏见,我在 MySQL 中将货币值存储为整数美分。我的 HTML 表单允许输入美元值,例如“156.64”,我使用 PHP 将其转换为美分,然后将美分存储在数据库中。
我有一个函数可以从表单中清除美元值,并将其转换为美分。我去掉前导文本,去掉尾随文本,乘以 100 并转换为整数。最后一步是
$cents = (integer) ($dollars * 100);
这对几乎所有东西都适用,除了像 '156.64' 这样的极少数值始终转换为 15663 美分。为什么这样做?
如果我这样做:
$cents = (integer) ($dollars * 100 + 0.5);
然后它一直有效。为什么我需要添加该舍入值?
另外,我对将金额存储为整数而不是浮点值的偏见是否不再需要?现代浮动计算是否会产生足以保持 100% 准确会计的完美四舍五入和准确的货币价值?
c# - 确定如何在 C# 中将对象转换为适当类型的最佳方法?
我目前正在开发一个批准路由 WCF 服务,该服务将允许用户创建确定如何路由请求的“规则”。通过比较 Request 类的“ObjectToEvaluate”属性与“Rule”类的“ObjectToEvaluate”属性来确定路由。“UnitOfMeasurement”枚举确定如何为每个类转换“ObjectToEvaluate”属性。
实现使用“UnitOfMeasurement”枚举转换“ObjectToEvaluate”属性的方法的最佳方法是什么?
c++ - 有什么方法可以只用类运算符进行转换吗?
一个随机的问题...
我正在寻找的是一种表达转换操作的方法,该操作使用我要转换的类实例的已定义运算符,如果没有为该类型定义的转换运算符,则会生成编译时错误。因此,例如,我正在寻找的是类似的东西:
有趣的旁注:上面的代码使 VS2005 C++ 编译器崩溃,并且由于我猜测是编译器错误,因此无法在 VS2008 C++ 编译器中正确编译,但希望能证明这个想法。
有人知道有什么方法可以达到这种效果吗?
编辑:更多理由,解释为什么你可能会使用它。假设您有一个包装器类,它应该封装或抽象一个类型,并且您将它转换为封装的类型。您可以使用 static_cast<>,但是当您希望它失败时这可能会起作用(即:编译器选择一个允许转换为您要求的类型的运算符,当您想要失败时,因为该运算符不存在)。
诚然,这是一个不常见的情况,但令人讨厌的是我无法准确地表达我希望编译器在封装函数中执行的操作......因此这里有问题。
c# - 无法将“System.Object[]”类型的对象转换为“MyObject[]”,这是什么原因?
设想:
我目前正在编写一个层来将 3 个类似的 Web 服务抽象为一个可用的类。每个 Web 服务都公开了一组具有共同性的对象。我创建了一组利用共性的中间对象。但是在我的层中,我需要在 Web 服务对象和我的对象之间进行转换。
在调用 Web 服务之前,我使用反射在运行时创建了适当的类型,如下所示:
这是我的调用代码,来自我的一个服务实现:
因此,每个服务都公开了一个不同的“Property”对象,我将其隐藏在我自己的 IProperty 接口实现后面。
反射代码在单元测试中工作,产生一个对象数组,其元素是适当的类型。但调用代码失败:
System.InvalidCastException:无法将“System.Object[]”类型的对象转换为“MyProject.Property[]”类型
有任何想法吗?
我的印象是,只要包含的对象是可转换的,来自 Object 的任何转换都会起作用?
c# - 将对象转换为通用接口
我有以下界面:
以及一堆(应该)实现它的类,例如:
我意识到这三个是不一样的:
但尽管如此,我需要一种方法来处理所有不同的类,比如 AdminRateShift(和 FXRateShift、DetRateShift),它们都应该实现 IRelativeTo。假设我有一个将 AdminRateShift 作为对象返回的函数:
通过针对接口进行编程,我可以做我需要做的事情,但我实际上不能将 Object 强制转换为 IRelativeTo 所以我可以使用它。
这是一个微不足道的例子,但我希望它能阐明我想要做什么。
c# - 从 C# 中的矩形数组中提取一维数组的最佳方法是什么?
假设我有一个矩形字符串数组 - 不是锯齿状数组
从中提取一维数组(单行或单列)的最佳方法是什么?当然,我可以使用 for 循环来做到这一点,但我希望 .NET 有一种更优雅的内置方式。
将提取的字符串数组转换为对象数组的奖励积分。
php - 在 PHP 中将字符串转换为整数的最快方法
"123"
使用 PHP,将这样的字符串转换为整数的最快方法是什么?
为什么这种特定方法最快?如果它得到意外的输入,比如"hello"
数组,会发生什么?
c++ - 以编程方式进行 C++ 铸造:可以做到吗?
假设我有一个Base类和几个Derived类。有什么方法可以将对象强制转换为派生类之一,而无需编写如下内容:
c# - 对对象类型使用“ref”和/或“out”
我坚持使用 .Net 1.1 应用程序(即我现在不能使用 2.0 中的泛型好东西),并且我试图优化代码的某些部分。由于它处理了很多需要释放的运行时可调用包装器,因此我最终创建了一个实用方法,该方法循环直到所有引用都被释放。该方法的签名是:
释放所有 comObjects 后,我调用 GC.Collect 和 GC.WaitForPendingFinalizers(不要问 - 任何处理 Office 互操作的人都知道)。
而且......像往常一样,我遇到了一个极端情况 - 如果我没有在 GC.Collect 调用之前将相应的托管引用分配给 null ,它就不会正确清理。
所以,我的代码看起来像:
因为有一堆xxx=null,所以我决定把它放在util方法中,但是由于引用传递和引用参数传递之间存在差异,显然我不得不将方法更改为:
并将调用者编辑为:
这失败并显示一条消息:“无法从 'out MyComClass' 转换为 'out object'”
虽然我能想到为什么它可能是一个问题(即从 object 到 MyComClass 的反向转换不是隐式的,并且不能保证该方法会做什么),但我想知道是否有解决方法,或者我需要留下我的数百个空值分配。
注意:我有一堆不同的 COM 对象类型,这就是为什么我需要一个“对象”参数,而不是一个类型安全的参数。