1

我得写几篇关于 C# 的文章,一般来说是小菜一碟?不!

我搜索了各种互联网资源和书籍,但我得到了一种头痛。例如垃圾收集器,一些消息来源说这是 C# 功能,其他 CLR 获得了此功能,而 C# 以及所有其他 .NET 语言默认获得了它。当然,我对 CLR 的投票是,但还有很多其他的事情会带来混乱,比如避免显式代码转换。也许我有不好的书籍和资源......所以也许有人会建议某个地方清楚地谈论 C#

第二件事是 C# 语法的起源,同样很少有选择,也不清楚,其他作者的其他语言组合。C、c++、Java,没关系,但 VB6 和 Delphi,我有疑问。来自这些语言的特性又与 c# 混淆了,但实际上并不清楚它是 C# 还是 CLR 特性

第 MTH

4

5 回答 5

6

GC 由 CLR 提供

C# 是语言规范规定的一切,仅此而已。

一些更有趣的东西实际上是 C# 特性:

  • 迭代器块 [yield return]
  • 匿名方法/闭包/ lambdas [语法,不要与表达式树混淆]

但是任何与您键入的代码相关但不是由 CLR 或框架直接提供的内容都是语言功能。当然,其他语言也可以实现它们......

  • 使用 [try/finally/Dispose]
  • 锁定 [Monitor.Enter/try/finally/Monitor.Exit]
  • foreach [GetEnumerator()/while/[Dispose]]
  • 扩展方法解析
  • 查询语法 ["where pred" to .Where(x=>pred) etc]

(当然,这些只是几个例子;同样——其他语言也可以自由地提供这些功能!)

于 2008-11-19T11:37:44.170 回答
3

GC 本身是 CLR 功能,但 C# 语言假定它运行在具有垃圾收集的平台上 - 没有定义确切的语义。

精确地确定是一件困难的事情,但粗略的经验法则是“如果它在语言规范中得到很好的定义,它就是 C# 特性”。

如果您可以提供更多要分类的功能示例(“避免显式代码转换”不是语言功能,除非您想提供更多细节),这将有所帮助。

于 2008-11-19T11:40:28.580 回答
0

CLR 是一个开发平台,一个运行时环境,支持用一种 .NET 语言编写的托管代码,C# 就是其中之一。垃圾收集是 CLR 的一项功能。与托管代码的代码访问安全性和即时编译一样。

于 2008-11-19T11:36:31.770 回答
0

您可能需要 C# 语言规范。以下是参考资料:

  1. C# 规范 (MSDN)
  2. 标准 ECMA-334 C# 语言规范
于 2008-11-19T11:47:59.267 回答
0

第二件事是 C# 语法的起源,同样很少有选择,也不清楚,其他作者的其他语言组合。C、c++、Java,没关系,但 VB6 和 Delphi,

C# 从 VB 得到的东西:

  • 特性
  • 活动
  • For-Each 循环
  • 模块,在 C# 中声明为“静态类”
  • 使用默认属性使类像数组一样工作
  • 后期绑定 (C# 4)
  • 整数溢出检查(C、C++ 和 Java 无法检测到何时溢出整数)
  • P/Invoke 用于调用 C++ dll

在某种程度上,可选参数(C# 4),但实际上是来自 COM。

于 2008-11-20T08:52:11.913 回答