问题标签 [explicit]

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 投票
2 回答
350 浏览

c# - 对于结构,我是否必须在 C# 中显式调用构造函数?

问题是关于结构的。当我声明一个结构类型变量/对象(不知道哪个更适合)或一个数组或结构列表时,我是否必须像对象一样显式调用构造函数,还是像变量一样声明就足够了?

0 投票
1 回答
663 浏览

c++ - 具有默认值的单参数构造函数是否可以进行隐式类型转换

我理解使用显式关键字来避免单个参数构造函数或具有多个参数的构造函数可能发生的隐式类型转换,其中只有第一个参数没有默认值。

但是,我想知道,在隐式转换方面,具有默认值的单个参数构造函数的行为是否与没有默认值的构造函数相同?

0 投票
10 回答
1831 浏览

c++ - Foo f = Foo(); // 没有匹配的函数调用 'Foo::Foo(Foo)' ... 嗯?

0 投票
3 回答
1252 浏览

c# - 从其他接口继承的接口的显式 C# 接口实现

考虑以下三个接口:

现在考虑以下实现 IInterface1 和 IInterface 2 的类:

这会导致错误,因为 SomeEvent 不是 IInterface1 或 IInterface2 的一部分,它是 IBaseInterface 的一部分。

Foo 类如何同时实现 IInterface1 和 IInterface2?

0 投票
3 回答
96 浏览

actionscript-3 - 显式键入变量会导致编译器认为内置类型的实例没有属性,它确实

我将 AS3 编译器错误 1119 的原因缩小到与此类似的代码:

我收到错误“1119:通过静态类型 Number 的引用访问可能未定义的属性构造函数”。

现在,如果我省略变量的类型,我不会得到那个错误:

它产生预期的输出:

那么有什么关系呢?我喜欢显式键入变量,那么除了不提供变量的类型之外,还有什么方法可以解决这个错误?

0 投票
2 回答
23334 浏览

c++ - 显式默认构造函数的目的

我最近注意到 C++0x 中的一个类需要显式的默认构造函数。但是,我没有想出一个可以隐式调用默认构造函数的场景。这似乎是一个毫无意义的说明符。我想也许它会Class c;不赞成,Class c = Class();但情况似乎并非如此。

来自 C++0x FCD 的一些相关引用,因为我更容易导航[类似的文本存在于 C++03 中,如果不在同一个地方]

12.3.1.3 [class.conv.ctor]

默认构造函数可以是显式构造函数;这样的构造函数将用于执行默认初始化或值初始化 (8.5)。

它继续提供一个显式默认构造函数的示例,但它只是模仿了我上面提供的示例。

8.5.6 [decl.init]

默认初始化 T 类型的对象意味着:

— 如果 T 是(可能是 cv 限定的)类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是非良构的);

8.5.7 [decl.init]

对 T 类型的对象进行值初始化意味着:

— 如果 T 是具有用户提供的构造函数(12.1)的(可能是 cv 限定的)类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是非良构的);

在这两种情况下,标准都要求调用默认构造函数。但是,如果默认构造函数是非显式的,就会发生这种情况。为了完整起见:

8.5.11 [decl.init]

如果没有为对象指定初始化器,则该对象是默认初始化的;

据我所知,这只会导致没有数据的转换。这没有任何意义。我能想到的最好的方法如下:

但显然这不是 C++ 处理默认参数的方式。还有什么会使explicit Class();行为与 不同Class();

产生这个问题的具体例子是std::function[20.8.14.2 func.wrap.func]。它需要几个转换构造函数,其中没有一个被标记为显式,但默认构造函数是。

0 投票
4 回答
466 浏览

c++ - 显式类型转换

我读过一本书,其中指定了这一点:

“强制转换很强大,但它可能会让人头疼,因为在某些情况下它会迫使编译器将数据视为(例如)比实际更大的数据,因此它将占用更多的内存空间;这可能会践踏其他数据. 这通常发生在转换指针时,而不是像上面显示的那样进行简单转换时。”

现在你能提供一个铸造指针可以践踏其他数据的例子吗?

0 投票
2 回答
1168 浏览

c# - 使用转换运算符对集合进行类型转换

下面的代码给了我用户定义的转换必须转换为封闭类型或从封闭类型转换,而片段#2 没有......似乎用户定义的转换例程必须转换为包含例程的类或从包含该例程的类转换。

我的替代方案是什么?显式运算符作为扩展方法?还要别的吗?

片段#2

提前致谢!

0 投票
3 回答
2355 浏览

sql-server - 使用 FOR XML AUTO 格式化表变量输出

使用 SQL Server 2008。

我有一个单列单行的表变量。

如果我这样做:

我得到如下所示的 XML:

当我真正想要的是:

如果行源是一个表,那似乎工作正常。当它是一个表变量时,我得到一个我不想要的子元素标签,我想要testsToRun而不是_x0040_testsToRun

如何修改我的 FOR XML 语句/子句以提供正确的输出?

谢谢。

0 投票
2 回答
386 浏览

generics - F#:运算符绑定中的显式类型参数

我正在尝试使用显式类型参数和约束来定义运算符:

它在 F# 2.0 中运行良好,但会产生:

警告 FS1189:
类型参数必须直接放在类型名称旁边,例如“类型 C<'T>”,而不是类型“C <'T>”

那么,为运算符定义做显式类型参数规范的正确方法是什么?

ps 请不要告诉我隐式类型参数和其他一些解决方法,我想具体解决这个问题。