C#是C的超集吗?

时间:2009-01-26 16:59:24

标签: c# c programming-languages

C#无论如何都是C的超集,比如Objective-C或C ++?有没有办法用构造这样的编译器标志在线编译C?

8 个答案:

答案 0 :(得分:37)

总之,没有。

答案 1 :(得分:13)

没有任何有意义的方式。它的灵感来自C(以及其他),但它们是完全不同的语言。

答案 2 :(得分:10)

就#em>语法而言,C#来自“c-like”系列,但就架构而言,感觉更像是Java(没有指针[好,如下所述,你可以使用它们,但大多数人不知道或不关心],数组绑定检查,垃圾收集内存等)。

你可以在C ++中获得更多,但不在核心。

答案 3 :(得分:8)

我们这样说:

  

CC#类似,rm -rf . /# rm -rf . /相似

简而言之,没有C不是C#的子集。许多控制结构的外观基于C.比如,for-loops,switch,while等等。同时,C#禁止具有潜在危险的构造,例如在忘记中断时从交换机中的情况下掉落;或者将整数作为if条件放置,其中布尔值是预期的。上面的引用意味着C#和C看起来非常相似,但转化为截然不同的结果。 C不会阻止你从你的分区中删除所有东西,C#会保护你不要误解这个,比喻说。

在另一个级别,C允许您对整数进行类型转换,推送它们,转换然后访问存储在该指针中的内存位置。 C不会保护您不会访问未分配的内存。你会崩溃 - 充其量。另一方面,C#会有例外情况,当您执行访问对象时会注意到引用空引用。

答案 4 :(得分:4)

C ++也不是C的真正超集(参见link text

答案 5 :(得分:3)

C#和C并没有真正相关(除了类似的语法)。 程序启动时,C#会从IL中删除机器代码。 除了该堆栈上的值类型之外,C#没有指针。 C#是完全类型安全的,C不是。 C需要显式内存管理,因为C#是垃圾回收。 差异列表一直在继续......

答案 6 :(得分:2)

C#与C非常不同(C ++也与C非常不同)。 这不是因为semanthics,它们最终没有太大的不同,而是因为概念,C#背后的想法。

当您使用C#进行编程时,如果使用C语言,则必须以不同的方式思考与以往相比:这是主要区别。

答案 7 :(得分:0)

C势在必行。 C#是面向对象的。