问题标签 [implicit-conversion]

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.

0 投票
1 回答
28383 浏览

c# - 使用接口的隐式运算符

我有一个泛型类,我正在尝试为其实现隐式类型转换。虽然它主要工作,但它不适用于界面转换。经过进一步调查,我发现存在编译器错误:“用户定义的接口转换”适用。虽然我知道这应该在某些情况下强制执行,但我正在尝试做的事情似乎是一个合法的案例。

这是一个例子:

使用它的代码:

有谁知道解决方法,或者任何人都可以以令人满意的方式解释为什么我不能interfaceReferenceToBar隐式转换为Foo<IBar>,因为在我的情况下它没有被转换,而只包含在 Foo 中?

编辑: 看起来协方差可能会提供救赎。我们希望 C# 4.0 规范允许使用协方差隐式转换接口类型。

0 投票
8 回答
21671 浏览

c++ - 你可以使用关键字显式来防止方法参数的自动转换吗?

我知道您可以对类的构造函数使用 C++ 关键字“显式”来防止类型的自动转换。您可以使用相同的命令来防止类方法的参数转换吗?

我有两个班级成员,一个将 bool 作为参数,另一个是 unsigned int。当我用 int 调用函数时,编译器将 param 转换为 bool 并调用了错误的方法。我知道最终我会替换 bool,但现在不想在开发这个新例程时破坏其他例程。

0 投票
14 回答
73045 浏览

c# - 我们可以在 c# 中定义枚举的隐式转换吗?

是否可以在 c# 中定义枚举的隐式转换?

可以做到这一点的东西?

如果不是,为什么不呢?

0 投票
5 回答
2414 浏览

c++ - 无法通过 C++ 中的隐式转换找到运算符

在编写一个类以充当堆分配对象的包装器时,我遇到了隐式类型转换的问题,可以简化为这个简单的示例。

在下面的代码中,包装类管理一个堆分配的对象并隐式转换为对该对象的引用。这允许包装器对象作为参数传递给函数 write(...),因为发生了隐式转换。

但是,当尝试解析对 operator<<(...) 的调用时,编译器会失败,除非进行了显式转换(使用 MSVC8.0、Intel 9.1 和 gcc 4.2.1 编译器进行检查)。

那么,(1)为什么在这种情况下隐式转换会失败?(2)它可能与依赖于参数的查找有关吗?(3) 如果没有明确的演员表,有什么可以做的吗?

0 投票
5 回答
5292 浏览

c# - 隐式运算符

我刚刚看到它在最近的一个答案中使用:

为什么我们需要这里隐含的词,它是什么意思?

0 投票
4 回答
6351 浏览

java - double a = a + int b 和 int a += double b 有什么区别?

为什么:

不编译但是:

编译。

0 投票
4 回答
1724 浏览

c++ - 为什么隐式转换成员函数重载按返回类型工作,而普通函数不允许?

C++ 不允许基于返回类型的方法的多态性。但是,当重载隐式转换成员函数时,这似乎是可能的。

有谁知道为什么?我认为操作符在内部像方法一样被处理。

编辑:这是一个例子:

0 投票
2 回答
607 浏览

javascript - 与字符串相等的 JavaScript 隐式转换

JavaScript 如何表现比较true == "true"(0 == "0")

0 投票
9 回答
6981 浏览

c++ - C++ 在条件下依赖隐式转换为布尔值吗?

我在编码标准表中找到了以下规则:

不要依赖条件中的隐式转换为布尔值。

if (ptr) // 错误

if (ptr != NULL) // 好的

这条规则有多合理/有用?

编译后的代码有多少重载?

0 投票
10 回答
5086 浏览

c# - 为什么允许从超类到子类的隐式转换?

谁能告诉我为什么带有“//Compiles”的行可以编译,为什么带有“//Doesn't Compile”的行不能编译?

我不明白为什么 A 可以隐式转换为 B,而不是反过来。

谢谢!