C#是C的超集吗? 是C的超集,不管是Objul-C还是C++?有没有一种方法可以使用编译器标志这样的结构在线编译C?

C#是C的超集吗? 是C的超集,不管是Objul-C还是C++?有没有一种方法可以使用编译器标志这样的结构在线编译C?,c#,c,programming-languages,C#,C,Programming Languages,总之,没有。没有任何意义。它的灵感来源于C(以及其他语言),但它们是完全不同的语言。C#在语法方面来自“类C”家族,但在架构方面,它更像Java(没有指针[好的,正如下面指出的,你可以使用它们,但大多数人不知道或不关心这一点]、数组绑定检查、垃圾回收内存等) 你可以在C++中得到很多,但是不是在核心中。 让我们这样说: C和C#类似于rm-rf/和#rm-rf/相似 简而言之,没有C不是C的子集。许多控制结构的外观都是基于C.Like的,例如循环、开关、while等等。同时,C#禁止潜在的危险结

总之,没有。

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

C#在语法方面来自“类C”家族,但在架构方面,它更像Java(没有指针[好的,正如下面指出的,你可以使用它们,但大多数人不知道或不关心这一点]、数组绑定检查、垃圾回收内存等)


<>你可以在C++中得到很多,但是不是在核心中。

让我们这样说:

C
C#
类似于
rm-rf/
#rm-rf/相似

简而言之,没有C不是C的子集。许多控制结构的外观都是基于C.Like的,例如循环、开关、while等等。同时,C#禁止潜在的危险结构,如忘记断路时从开关盒上摔下来;,或者将一个整数作为if条件放置在期望布尔值的位置。上面的引语意味着C#和C看起来非常相似,但结果却大不相同。在C不会阻止您从分区中删除所有内容的情况下,C#会保护您避免误操作,比喻地说

在另一个级别上,C允许您键入指向整数的强制转换指针,将这些指针推送、强制转换,然后访问存储在该指针中的内存位置。C不会保护您访问非您分配的内存。你最多也会撞车。另一方面,当您通过空引用访问对象之类的操作时,C#会出现异常情况。C#和C并不真正相关(除了类似的语法)。 当程序启动时,C#被即时转换为IL的机器代码。 除了堆栈上的值类型之外,C#没有指针。 C是完全类型安全的,C不是。 C需要显式内存管理,其中as C#是垃圾收集的。
差异的列表上,……

< P> C++不是C的真超集(参见)

:P> C>C与C(C++也有很大的不同)。 这并不是因为语义,它们在最后并没有太大的不同,而是因为C#背后的概念和思想


当你用C语言编程时,你必须用一种不同于使用C语言时的思维方式:这是主要的区别。

C是必不可少的。C#是面向对象的。

我就是这么想的,太糟糕了,我不会说它那么糟糕。事实证明,这是一个很好的方法,可以解决许多可以追溯到80年代的C问题。令人惊讶的是,这个答案得到了+18。。。而其他需要时间、研究和思考的项目则远远达不到这一点。真遗憾。我想这应该追溯到吻:)无论如何,我没想到这会得到这么多attention@bobwienholt-我同意-我认为更多的好答案没有被选中是一件很遗憾的事。我认为问题在于,更复杂的答案需要研究来确定它们是否正确,因此正确地投票是一项艰巨的工作。这一个很容易升级,因为它很简单。或者Java和Javascript显然:)罗伯特,哈哈,是的,我把它从这个类比中删除了:我最喜欢的类比是“Java和Javascript就像汽车一样,地毯一样。”C不需要显式的内存管理;有许多GC库。Boehm就是其中之一。但是,本机C仍然需要显式内存管理,无论您是否将其隐藏在库中,都不能掩盖它不是本机管理的事实。有了C#它从一开始就被烧掉了。从技术上说是的。。。但事实上这很接近。但是,C除了语法之外,还不太接近C。如果你愿意接受C仍然是它自己的语言,并且继续自己的语言成长,并且在出生后(Bjarne称之为直接后裔)C++,他们就分开了。Bjarne称之为“一个更好的C”,但这是它自己的语言,具有不同的范例。好吧,我来咬一口:假设我想在C#中实现矩阵乘法或泡泡排序。也假设我像一个C程序员那样思考。我会失败吗?我可以使用适当的编译器指令在Obj-C或C++中编译C代码。这就是我的观点——这两种语言并不是相互排斥的,事实上我要说的是,C和C都是命令式的
面向对象的。(见附件)。即使其中一个不是,这也不能真正回答它是否是超集的问题!相关的: