有关C# 8.0、.NET Framework 4.8与NET Standard 2.1的一个说明

早在本月12日,微软官方的.NET Blog发布了一篇名为《Building C# 8.0》的文章,介绍了很多C# 8.0的新特性。不过本文主要讨论的并不是C# 8.0的新特性,而是存在于这篇文章中的一段文字:

Most of the C# 8.0 language features will run on any version of .NET. However, a few of them have platform dependencies.

Async streams, indexers and ranges all rely on new framework types that will be part of .NET Standard 2.1. As Immo describes in his post Announcing .NET Standard 2.1, .NET Core 3.0 as well as Xamarin, Unity and Mono will all implement .NET Standard 2.1, but .NET Framework 4.8 will not. This means that the types required to use these features won’t be available when you target C# 8.0 to .NET Framework 4.8.

这里的文字说的是,文中所介绍的绝大部分C# 8.0的新特性都可以在任何版本的.NET上使用,唯独有个别的功能需要在特定版本的.NET上才能使用。比如,Async streams,indexers and ranges这些特性都需要依赖于由.NET Standard 2.1引入的新类型,根据Immo在他的博客中所述,.NET Core 3.0、Xamarin、Unity以及Mono都会实现.NET Standard 2.1,而.NET Framework 4.8却不会。这也就意味着,这些C# 8.0的新特性,无法在目标框架为.NET Framework 4.8的情况下使用,也就是说,这些C# 8.0的新特性,无法在经典的.NET环境中使用。如此看来,貌似与以前展示的.NET平台架构有所出入,因为新版本的.NET Framework并不实现.NET Standard 2.1。

640?wx_fmt=png

我在2018年3月24日上海MVP线下技术交流活动中,分享过C#7.x的新特性,并且做了一场演示,展示了将C# 7.2 target到.NET Framework 2.0的工程,并在2.0的工程中使用C# 7.2的语法特性进行开发。由此看来,这是完全可行的,前提是,我所使用的开发库必须是可基于CLR 2.0运行的。你会发现,即使我使用C# 7.2,我仍然无法在一个2.0的工程中使用async/await的异步框架,原因是,async/await所依赖的TPL只能运行在4.0的CLR上,因此,C# 7.2可以target到.NET Framework 2.0,但是有一部分语言特性无法使用,这种情况同样发生在上面的C# 8.0上。

据此分析,.NET Standard 2.1引入新的API(比如Span<>)需要修改.NET的公共语言运行时(Common Language Runtime,CLR),这样的修改,对于.NET Core、Xamarin、Unity以及Mono这些重新设计的框架来说,应该更为方便;而对于经典.NET Framework这种具有历史特点的框架来说,或许并不那么直接容易,所以,.NET团队推后了经典.NET CLR的变更计划,由此也就推后了.NET Framework对于C# 8.0新特性的支持计划,因此,.NET Framework 4.8仍然只支持.NET Standard 2.0,部分C# 8.0的新特性无法使用。

经典.NET Framework的公共语言运行时(CLR)在整个.NET的发展进程中也就只出现过4个版本:1.0/1.1/2.0/4.0。 1.0和1.1基本上可以忽略不计了,估计现在已经没有什么项目在用这两个版本相对应的.NET Framework了。让大家最为熟知的是.NET CLR 2.0和4.0的版本:CLR 2.0随着Visual Studio 2005的发布,直到Visual Studio 2010的CLR 4.0,一共有5年时间;而2010年随着Visual Studio 2010一起发布的.NET CLR 4.0,至今也有近9年的历史了。随着.NET Standard API的不断扩展,相信不久的将来,我们会迎来一次CLR的版本升级,使得经典.NET Framework能够更好地支持.NET Standard API以及新的编程语言特性,契合整个.NET的平台架构。

原文地址:http://sunnycoding.cn/2018/11/27/csharp8-net-framework-4-8-and-net-standard-2-1-side-note/


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021牛客暑期多校训练营1 J-Journey among Railway Stations(线段树+思维转化)

J-Journey among Railway Stations 注意区间合并时是否可行信息的合并。 假设线段树当前左节点lll维护的区间是[L,mid][L,\text{mid}][L,mid]&#xff0c;右节点维护的区间为[mid1,R][\text{mid1},R][mid1,R] 如果它们分别可行&#xff0c;意味着可以从L→midL\to \text{mid}…

牛客题霸 [括号序列] C++题解/答案

牛客题霸 [括号序列] C题解/答案 题目描述 给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串&#xff0c;判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭&#xff0c;"()“和”()[]{}“都是合法的括号序列&#xff0c;但”(]“和”([…

P3964-[TJOI2013]松鼠聚会【计算几何】

正题 题目链接:https://www.luogu.com.cn/problem/P3964 题目大意 给出nnn个点&#xff0c;求一个点使得它到所有点的切比雪夫距离和最小。 0≤n≤105,−109≤xi,yi≤1090\leq n\leq 10^5,-10^9\leq x_i,y_i\leq 10^90≤n≤105,−109≤xi​,yi​≤109 解题思路 额切比雪夫距…

领域驱动设计,让程序员心中有码

“ 领域驱动设计的背后&#xff0c;需要开发者不能只专注于眼前功能的实现&#xff0c;而应该能够从全局去了解业务&#xff0c;并充分的将业务吃透&#xff0c;以可传承的知识的形式融入到开发过程中&#xff0c;只有这样才能促进产品更好的开发。”01—传统项目管理模式&…

模板:快读

我也学会快读了~~~ 没啥可讲的 注意对负号的处理 int input () {int x 0, f 0;char c getchar ();while (c < 0 || c > 9) f c -, c getchar ();while (c > 0 && c < 9) x (x << 1) (x << 3) (c ^ 48), c getchar ();return f ? -…

codeforces1553 F. Pairwise Modulo(数学)

F. Pairwise Modulo 想到了&#xff0c;但又没完全想到。。wtcl 首先 pkpk−1∑1≤i<kakmodai∑1≤i<kaimodakp_kp_{k-1}\sum_{1\leq i<k} a_k \bmod \ a_i\sum_{1\leq i<k} a_i \bmod \ a_kpk​pk−1​∑1≤i<k​ak​mod ai​∑1≤i<k​ai​mod ak​ ∑1≤…

牛客题霸 [寻找第K大] C++题解/答案

牛客题霸 [寻找第K大] C题解/答案 题目描述 有一个整数数组&#xff0c;请你根据快速排序的思路&#xff0c;找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间)&#xff0c;请返回第K大的数&#xff0c;保证答案存在。 题目&#xff1a; …

Loj#6247-九个太阳【单位根反演】

正题 题目链接:https://loj.ac/p/6247 题目大意 给出n,kn,kn,k求 ∑0≤i≤n,i∣k(ni)\sum_{0\leq i\leq n,i|k}\binom{n}{i}0≤i≤n,i∣k∑​(in​) 对998244353998244353998244353取模 1≤n≤1015,1≤k≤220,k2p(p∈N)1\leq n\leq 10^{15},1\leq k\leq 2^{20},k2^p(p\in N)1…

Docker最全教程——从理论到实战(二)

容器是应用走向云端之后必然的发展趋势&#xff0c;因此笔者非常乐于和大家分享我们这段时间对容器的理解、心得和实践。本篇教程持续编写了2个星期左右&#xff0c;只是为了大家更好地了解、理解和消化这个技术&#xff0c;能够搭上这波车。你可以关注我们的公众号“magiccode…

图论模板详解:存图

图论千万条&#xff0c;存图第一条 1.邻接矩阵 用一个矩阵x[i][j]表示i到j的路径 优点&#xff1a;代码方便&#xff0c;易于去重 缺点&#xff1a;空间复杂度爆炸 优化&#xff1a;二维vector&#xff08;但是会变慢&#xff09; 2.链式前向星 &#xff08;抄资料毫不掩饰&a…

2021牛客暑期多校训练营3 C-Minimum grid(二分图)

C-Minimum grid 如果第iii行最大值是aaa&#xff0c;第jjj列最大值是ccc&#xff0c;我们需要第iii行单独有一个格子权值是aaa&#xff0c;而且第jjj列单独有一个格子权值是bbb&#xff0c;不过如果第iii行最大值和第jjj列最大值是都是aaa&#xff0c;那么我们只需让第iii行第…

牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案

牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2&#xff0c;请找到 o1 和 o2 的最近公共祖先节点。 题解&#xff1a; 我们想想最近公共祖先节点满足什么要求&#xff1f;&#xff1f; o1和o2分别位…

P4249-[WC2007]剪刀石头布【费用流】

正题 题目链接:https://www.luogu.com.cn/problem/P4249 题目大意 nnn个点的竞赛图有的边已经确定了方向&#xff0c;要求给剩下的边确定一个方向使得图的三元环最多。 1≤n≤1001\leq n\leq 1001≤n≤100 解题思路 竞赛图如果三个点不能构成三元环有一个性质就是恰好有一个点…

eShopOnContainers 知多少[4]:Catalog microservice

引言Catalog microservice&#xff08;目录微服务&#xff09;维护着所有产品信息&#xff0c;包括库存、价格。所以该微服务的核心业务为&#xff1a;产品信息的维护库存的更新价格的维护架构模式如上图所示&#xff0c;本微服务采用简单的数据驱动的CRUD微服务架构&#xff0…

2021牛客暑期多校训练营3 I-Kuriyama Mirai and Exclusive Or(异或+差分)

I-Kuriyama Mirai and Exclusive Or KeHe题解 diabolusexnihil题解 不过diabolusexnihil大佬的题解有一部分写错了应该是&#xff1a;每次分裂标记bl,ib_{l,i}bl,i​需要给数组[l2i−1,l2i)⊕2i−1[l2^{i-1},l2^i)\oplus2^{i-1}[l2i−1,l2i)⊕2i−1然后标记分裂成bl,i−1,bl2…

最短路模板:dij,spfa与floyd

图论技能get&#xff01; 一个超强大的建图网站 最短路问题 1.dij算法 用于单源最短路 仅适用于没有负边权的情况 初始化dis数组为inf&#xff0c;dis【起点】0&#xff1b; tool&#xff1a;priority-queue&#xff08;按dis升序&#xff09; 先把起点放进队列 每次取出排头…

P5748-集合划分计数【EGF,多项式exp】

正题 题目链接:https://www.luogu.com.cn/problem/P5748 题目大意 求将nnn的排列分成若干个无序非空集合的方案。 输出答案对998244353998244353998244353取模。 1≤n≤105,1≤T≤10001\leq n\leq 10^5,1\leq T\leq 10001≤n≤105,1≤T≤1000 解题思路 就是求划分数 分成ii…

牛客题霸 [ 岛屿数量] C++题解/答案

牛客题霸 [ 岛屿数量] C题解/答案 题目描述 给一个01矩阵&#xff0c;1代表是陆地&#xff0c;0代表海洋&#xff0c; 如果两个1相邻&#xff0c;那么这两个1属于同一个岛。我们只考虑上下左右为相邻。 岛屿: 相邻陆地可以组成一个岛屿&#xff08;相邻:上下左右&#xff09;…

ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

一、前言最近一两个星期&#xff0c;加班&#xff0c;然后回去后弄自己的博客&#xff0c;把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10&#xff0c;原本计划的学习 Vue 中生命周期的相关知识目前也没有任何的进展&#xff0c;嗯&#xff0c;罪过罪过。看了…

图论:dij算法优化:双端队列及详细证明

dij原来的写法请移步这里 首先&#xff0c;让我们举一个洛谷中的情境 这题中&#xff0c;我们可以二分mid答案&#xff0c;小于等于mid的边权是0&#xff0c;大于的是1&#xff0c;再计算最短路是否<k&#xff1b; 那么在这样边权只有0和1的时候&#xff0c;dij算法是否可以…