有一个众所周知的事实是C ++模板图灵完备 , CSS是图灵完备的 (!),而C#重载是NP难的 (即使没有仿制药)。
但C#4.0(带有CO /逆变,仿制药等), 编译时图灵完备 ?
有一个众所周知的事实是C ++模板图灵完备 , CSS是图灵完备的 (!),而C#重载是NP难的 (即使没有仿制药)。
但C#4.0(带有CO /逆变,仿制药等), 编译时图灵完备 ?
不像在C ++模板,在C#(和其他.NET郎)泛型的运行时生成的特征。 该编译器做一些检查,以验证类型使用,但是,实际的替代发生在运行时。 这同样适用于合作和逆变,如果我没有记错,以及即使是预处理指令 。 大量的CLR魔法。
(在执行水平,主要区别是C#的通用型取代是在运行时和通用类型的信息来执行从而保存实例化的对象)
参见MSDN
http://msdn.microsoft.com/en-us/library/c6cyy67b(v=vs.110).aspx
更新:CLR确实预制棒类型通过存储在与编译的程序相关的元数据信息的检查( 面对面的人日新Compliation ),它这样做是因为它的许多服务之一,( ShuggyCoUk对这个问题的回答解释了它的细节 ) (其他包括内存管理和异常处理)。 因此,与我会推断,编译器状态的进展和状态,机器内部状态(的理解TC ,一部分是指能够检查数据(符号)与这么参照以前的数据(符号),有条件和评估)(我毫不犹豫地说出确切的DEF TC作为我自己我不知道我有充分把握,可以随意填写的空白和指正适用时)因此,与我会带着几分惶恐的说是的,是的,它可以。