问题标签 [language-specifications]

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 回答
11243 浏览

c# - C#中的foreach是如何实现的?

foreach在 C# 中究竟是如何实现的?

我想象它的一部分看起来像:

但是我不确定到底发生了什么。enumerator.Current每个周期使用什么方法返回?它是返回 [for each cycle] 还是需要一个匿名函数或其他东西来执行它的主体foreach

0 投票
1 回答
106 浏览

c# - 显式布局类型中布尔字段的语义 (ECMA-334)

我试图找到在 ECMA-334(C# 语言规范)中定义以下行为的位置。源程序如下。

执行结果如下。

这违反了 §14.9.4 和 §14.10.3 两节,所以我假设其他地方有一个例外情况,涵盖了这些情况。请注意,这不会影响使用 AND、OR、NAND 或 NOR 运算的代码,但会影响使用 XOR 和/或逻辑双条件运算的代码。

0 投票
2 回答
380 浏览

c# - 泛型参数何时不能为空

在一个通用GetHashCode(T foo)方法中,我检查是否foonull. 然而,我偶然发现了一个奇怪的 Resharper 警告。

在下面的代码中,foo永远不可能null

但是据我所知,以下内容是完全合法的:

0 投票
2 回答
11091 浏览

c# - 在哪里可以找到 C# 5 语言规范?

自 2012 年 8 月以来,C# 5.0 现已发布。我在哪里可以找到规范?他们已经停止了 ECMA 规范,但是 MSDN 呢?

0 投票
3 回答
1980 浏览

c# - 运行时类型与编译时类型方法调用

C# 4.0 规范如下:

调用虚拟方法时,发生该调用的实例的运行时类型决定了要调用的实际方法实现。在非虚拟方法调用中,实例的编译时类型是决定因素。

起初,我认为这与初始化有关。例如,给定两个初始化:

BaseClass bcDerived = new Derived();对比BaseClass bcBase = new BaseClass();

以及辅助类中的重载:

Method在这种情况下,调用不受virtual关键字的影响。不管是否有标记virtual,都会调用派生最少的重载。只有在override派生类中,方法调用才会改变。

那么,“运行时类型”和“编译时类型”是什么意思呢?它们如何影响方法调用?

0 投票
3 回答
166 浏览

c# - 为什么扩展方法绕过显式转换的需要?

我有两个引用类型之间的显式转换设置。

如果我调用 Foo 并传递一个 类型Bike,那么我必须执行显式转换。

但是,如果我添加扩展方法,则不再需要显式转换。

为什么扩展方法能够Bike隐式调用 Foo 类型?

0 投票
4 回答
8125 浏览

python - Python 的任何/全部的短路行为是显式的吗?

由此处的讨论提示

文档all为和的行为提出了一些等效的代码any

等效代码的行为是否应该被视为定义的一部分,或者实现可以以非短路方式实现它们?

这是来自 cpython/Lib/test/test_builtin.py 的相关摘录

它不会做任何事情来强制执行短路行为

0 投票
1 回答
184 浏览

frama-c - 一个可能无限的 C 函数的 ACSL 规范

我试图指定外部函数的行为,更准确地说,它们的终止。ACSL 文档说该\terminates p;属性指定如果谓词p成立,则保证函数终止,但在p不成立时不指定任何内容。它还解释了一个永远不会返回的函数可以通过以下方式指定:

此外,ACSL 提供了一个属性\exits p;来指定在突然终止的情况下的后置条件。所以我想知道是否:

会指定函数总是永远循环吗?

此外,规范是什么:

意味着关于可能的无限循环?

0 投票
2 回答
353 浏览

syntax-highlighting - Gedit 在线语言规范生成器

是否有在线生成器或类似的东西,用于 gedit 的新亮点?

我正在使用一种未知的语言,我希望有语法高亮,但它似乎太复杂了,我虽然可能存在一些在线创建者。

0 投票
1 回答
326 浏览

javascript - 如果它存在于另一个数组/对象中,则获取数组中元素的索引

有两个数组:

和一个物体

它们是固定的,结构本身不能改变。

itemValues 的值应该用来自 ref 对象的值填充,要获得索引,我们必须查找 itemKeys 数组。

这个问题的重点:我不想使用 2 个“for”循环来检查每个键是否存在于 ref 中。我想使用 JAVASCRIPT 特定功能,例如“indexOf”,所以:

是 ANY OTHER 方式,而不是两个 FOR-LOOP 来完成这项任务?

请不要质疑我为什么需要这个,为什么我不喜欢 2 个循环。显然,在“后面”的任何实现下,它将是 2 个循环。