gpt4 book ai didi

c#-4.0 - C# 4.0 编译时图灵完整吗?

转载 作者:行者123 更新时间:2023-12-02 20:05:31 26 4
gpt4 key购买 nike

有一个众所周知的事实:C++ templates are turing-complete , CSS is turing-complete (!)并且 C# overload resolution is NP-hard (即使没有泛型)。

但是 C# 4.0(具有协变/逆变、泛型等)编译时图灵完备吗?

最佳答案

与 C++ 中的模板不同,C#(和其他 .net 语言)中的泛型是运行时生成的功能。编译器确实会进行一些检查来验证类型的使用,但是实际的替换发生在运行时。如果我没记错的话,Co 和逆变也是如此,甚至 preprocessor directives 也是如此。 。很多 CLR 魔法。

(At the implementation level, the primary difference is that C# generic type substitutions are performed at runtime and generic type information is thereby preserved for instantiated objects)

参见 MSDN

http://msdn.microsoft.com/en-us/library/c6cyy67b(v=vs.110).aspx

更新:CLR 通过存储在与已编译程序集关联的元数据中的信息来执行类型检查 ( Vis-à-vis Jit Compliation ),它将此作为其众多服务之一 ( ShuggyCoUk answer on this question explains it in detail )(其他服务包括内存管理和异常处理)。因此,我推断编译器将状态理解为进展,将状态理解为机器内部状态( TC ,部分意味着能够引用先前的数据(符号)来审查数据(符号),有条件地进行评估)(我犹豫是否要说出 TC 的确切定义,因为我自己不确定我是否完全掌握了它,所以请随意填写空白并在适用时纠正我)所以我会说有点惶恐,是的,是的,可能是这样。

关于c#-4.0 - C# 4.0 编译时图灵完整吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11984490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com