C#和.NET的区别有多大?
我看到了一些语言特性,比如C#的C#和.NET的区别有多大?,c#,.net,frameworks,programming-languages,C#,.net,Frameworks,Programming Languages,我看到了一些语言特性,比如C#的foreach循环(需要使用IEnumerable),以及使用语法的(使用IDisposable,知道调用哪个方法)和LINQ(我假设它也使用了一堆.NET东西)。所有这些似乎都与.NET框架紧密相连。因此: C#能否以不同的框架存在?(已经有了吗?) 如果是这样,语言如何指定“foreach循环需要IEnumerable实例”,而不将其绑定到框架中 是-是一个开源软件 跨平台实现 .Net框架 不确定,很好 问题。Mono取代了 .Net framework
foreach
循环(需要使用IEnumerable
),以及使用语法的(使用IDisposable
,知道调用哪个方法)和LINQ(我假设它也使用了一堆.NET东西)。所有这些似乎都与.NET框架紧密相连。因此:
- C#能否以不同的框架存在?(已经有了吗?)
- 如果是这样,语言如何指定“foreach循环需要IEnumerable实例”,而不将其绑定到框架中
是-是一个开源软件
跨平台实现
.Net框架李>
不确定,很好
问题。Mono取代了
.Net framework和CLR等
这对Mono来说不是问题
调查这一点的最佳地点是。
例如,对于可枚举项,以下是规范中的一些片段:
10.14.2可枚举接口
可枚举接口是
非通用接口
System.Collections.IEnumerable和all
泛型的实例化
接口
System.Collections.Generic.IEnumerable。
为了简洁起见,在本节中
第二章这些接口是
引用为IEnumerable和
i分别是可数的
10.14.5.1 GetEnumerator方法
可枚举对象提供
GetEnumerator的实现
IEnumerable和IEnumerable方法
IEnumerable接口。两个
GetEnumerator方法共享一个公共
获得和
返回可用的枚举数
对象枚举器对象为
用参数值初始化
当
已初始化可枚举对象,但
否则,枚举器对象
功能如§10.14.4所述
这与.NET BCL中实际定义这些接口的方式密切相关,尽管完全可以使用不同的(即非.NET)框架来提供C#编译器可以针对的类似、兼容的实现
规范中难以与.NET framework分离的部分通常标记为:
注意:本节仅适用于C#的Microsoft.NET实现
另一方面,foreach
实际上并不需要IEnumerable
;它可以使用一种“duck-typing”,您可以在规范的第8.8.4节中了解到这一点。Ah,因此它实际上是关于语言的实现,那么?@Smashery:我认为最好从兼容编译器的实现角度来考虑它;与foreach类似,它完全基于模式。表达式树的依赖性更强,但该转换的细节实际上并不在规范中。没错,尽管如您所说,Mono是.NET framework的一个实现。这并不是一个完全不同的框架。我更想知道的是“C#能否处理Python库这样不同的东西?”