C#无论如何都是C的超集,比如Objective-C或C ++?有没有办法用构造这样的编译器标志在线编译C?
答案 0 :(得分:37)
总之,没有。
答案 1 :(得分:13)
没有任何有意义的方式。它的灵感来自C(以及其他),但它们是完全不同的语言。
答案 2 :(得分:10)
就#em>语法而言,C#来自“c-like”系列,但就架构而言,感觉更像是Java(没有指针[好,如下所述,你可以使用它们,但大多数人不知道或不关心],数组绑定检查,垃圾收集内存等)。
你可以在C ++中获得更多,但不在核心。
答案 3 :(得分:8)
我们这样说:
C
和C#
类似,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#是面向对象的。