问题标签 [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.
c# - C#中的foreach是如何实现的?
foreach
在 C# 中究竟是如何实现的?
我想象它的一部分看起来像:
但是我不确定到底发生了什么。enumerator.Current
每个周期使用什么方法返回?它是返回 [for each cycle] 还是需要一个匿名函数或其他东西来执行它的主体foreach
?
c# - 显式布局类型中布尔字段的语义 (ECMA-334)
我试图找到在 ECMA-334(C# 语言规范)中定义以下行为的位置。源程序如下。
执行结果如下。
这违反了 §14.9.4 和 §14.10.3 两节,所以我假设其他地方有一个例外情况,涵盖了这些情况。请注意,这不会影响使用 AND、OR、NAND 或 NOR 运算的代码,但会影响使用 XOR 和/或逻辑双条件运算的代码。
c# - 泛型参数何时不能为空
在一个通用GetHashCode(T foo)
方法中,我检查是否foo
是null
. 然而,我偶然发现了一个奇怪的 Resharper 警告。
在下面的代码中,foo
永远不可能null
?
但是据我所知,以下内容是完全合法的:
c# - 在哪里可以找到 C# 5 语言规范?
自 2012 年 8 月以来,C# 5.0 现已发布。我在哪里可以找到规范?他们已经停止了 ECMA 规范,但是 MSDN 呢?
c# - 运行时类型与编译时类型方法调用
C# 4.0 规范如下:
调用虚拟方法时,发生该调用的实例的运行时类型决定了要调用的实际方法实现。在非虚拟方法调用中,实例的编译时类型是决定因素。
起初,我认为这与初始化有关。例如,给定两个初始化:
BaseClass bcDerived = new Derived();
对比BaseClass bcBase = new BaseClass();
以及辅助类中的重载:
Method
在这种情况下,调用不受virtual
关键字的影响。不管是否有标记virtual
,都会调用派生最少的重载。只有在override
派生类中,方法调用才会改变。
那么,“运行时类型”和“编译时类型”是什么意思呢?它们如何影响方法调用?
c# - 为什么扩展方法绕过显式转换的需要?
我有两个引用类型之间的显式转换设置。
如果我调用 Foo 并传递一个 类型Bike
,那么我必须执行显式转换。
但是,如果我添加扩展方法,则不再需要显式转换。
为什么扩展方法能够Bike
隐式调用 Foo 类型?
frama-c - 一个可能无限的 C 函数的 ACSL 规范
我试图指定外部函数的行为,更准确地说,它们的终止。ACSL 文档说该\terminates p;
属性指定如果谓词p
成立,则保证函数终止,但在p
不成立时不指定任何内容。它还解释了一个永远不会返回的函数可以通过以下方式指定:
此外,ACSL 提供了一个属性\exits p;
来指定在突然终止的情况下的后置条件。所以我想知道是否:
会指定函数总是永远循环吗?
此外,规范是什么:
意味着关于可能的无限循环?
syntax-highlighting - Gedit 在线语言规范生成器
是否有在线生成器或类似的东西,用于 gedit 的新亮点?
我正在使用一种未知的语言,我希望有语法高亮,但它似乎太复杂了,我虽然可能存在一些在线创建者。
javascript - 如果它存在于另一个数组/对象中,则获取数组中元素的索引
有两个数组:
和一个物体
它们是固定的,结构本身不能改变。
itemValues 的值应该用来自 ref 对象的值填充,要获得索引,我们必须查找 itemKeys 数组。
这个问题的重点:我不想使用 2 个“for”循环来检查每个键是否存在于 ref 中。我想使用 JAVASCRIPT 特定功能,例如“indexOf”,所以:
是 ANY OTHER 方式,而不是两个 FOR-LOOP 来完成这项任务?
请不要质疑我为什么需要这个,为什么我不喜欢 2 个循环。显然,在“后面”的任何实现下,它将是 2 个循环。