Tag: 语言规范

我在哪里可以findC#5语言规范?

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

理解语言规范中描述的C#types推断的问题

C#语言规范描述了第7.5.2节中的types推断。 有一个细节,我不明白。 考虑以下情况: // declaration void Method<T>(T obj, Func<string, T> func); // call Method("obj", s => (object) s); Microsoft和Mono C#编译器都正确地推断T = object ,但是我对规范中的algorithm的理解会产生T = string ,然后失败。 这是我的理解: 第一阶段 如果Ei是一个匿名函数,则从Ei到Ti创build一个明确的参数types推断 (第7.5.2.7节) ⇒没有效果,因为lambdaexpression式没有明确的参数types。 对? 否则,如果Ei具有typesU并且xi是值参数,则从U到Ti进行下限推断 。 ⇒第一个参数是静态types的string ,所以这将string添加到T的下限,对不对? 第二阶段 所有不依赖于 (§7.5.2.5)任何Xj的非固定typesvariablesXi是固定的(§7.5.2.10)。 ⇒T是不固定的; T不依赖于任何东西…所以T应该是固定的,对吧? §7.5.2.11修复 候选typesUj的集合始于Xi的边界集合中的所有types的集合。 ⇒{ string (下界)} 然后,我们依次检查Xi的每个边界:对于Xi的每个下界U,从候选集合中删除所有typesUj,其中不存在从U的隐式转换。 […] ⇒不会从候选集中删除任何东西,对吗? 如果在剩余的候选typesUj中存在唯一的typesV,从其中隐含地转换到所有其他候选types,则将Xi固定为V. ⇒由于只有一个候选types,所以这是真实的,所以Xi被固定为string 。 对? 那么我哪里错了?

我在哪里可以findC#语言规范6.0?

我知道在哪里可以findC#5语言规范,但我无法在任何地方findC#6语言规范。 C#6语言规范在哪里?

C#短/长/整型文字格式?

在C / C#/等你可以告诉编译器,一个文字数字是不是看起来是(即, float而不是double , unsigned long而不是int : var d = 1.0; // double var f = 1.0f; // float var u = 1UL; // unsigned long 等等 有人可以指出我的名单吗? 我正在寻找一个short的后缀或Int16 。

在Python中是False == 0和True == 1的实现细节,还是由语言保证的?

在Python中保证False == 0和True == 1吗? 举例来说,不pipePython的版本(包括现有的和未来的版本),下面的代码总能产生相同的结果吗? 0 == False # True 1 == True # True ['zero', 'one'][False] # is 'zero' 任何参考官方文件将非常感谢! 编辑 :正如在许多答案中指出的, bool从intinheritance。 因此,这个问题可以被重写为:“文档是否正式说过程序员可以依赖于从整数inheritance的布尔值,值为0和1 ?”。 这个问题是相关的编写健壮的代码,不会因为实现细节而失败!