C# 很少人知道的科技1-无限级判断空

369 2020-10-19
我是一只小可爱
本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技,如果觉得我是在骗你,那么请看看本文的内容。 原本最初 C# 的设计是简单和高效开发的,在经过了这么多年众多公司和开发者的努力下,整个 C# 里面包含了大量有趣的功能。其中一部分功能是针对于某些特殊需求设计的,例如高性能或高并发或无内存回收等。在经过了 10 多年的迭代,很少人能完全了解整个 C# 语言和框架级做了哪些有趣的功能 我在网上找了很多大神的博客,然后和很多大神聊天,知道了一些科技,于是就在本文和大家分享一下。如果大家有了解本博客里面没有收藏的科技,还请告诉我 现在整个 C# 从编译器到运行时都是开源的,所有权在 dotnet 基金会上,全部开源的项目都基于最友好的 MIT 协议和 Apache 2 开源协议,文档协议遵循CC-BY协议。这将允许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示,后者协议将会除了为用户提供版权许可之外,还有专利许可,并且授权是免费,无排他性的(任何个人和企业都能获得授权)并且永久不可撤销,用户使用.NET 和 C# 完全不用担心收费问题和版权问题,以及后续无法维护问题。而 dotnet 基金会是一个开放的平台,我也是 dotnet 基金会的成员之一。微软在 2020 的时候依然是 dotnet 基金会最大的支持组织 现在最火的 dotnet 仓库是 dotnet csharplang 仓库,当前的 C# 语言特性由整个社区决定,这是一个官方开放用来讨论 C# 语言未来的仓库,天天都有大佬们在讨论语言的特性,欢迎大家加入 接下来让我告诉大家一些很少有人会发现的科技 无限级判断空 [hr] 在 C# 6.0 可以使用??判断空,那么就可以使用下面代码 [pre] var v1 = "123"; string v2 = null; string v3 = null; var v = v1 ?? v2 ?? v3; [/pre] 实际上可以无限的使用??判断前面一个函数为空,那么问题来了,下面的代码输出的是多少? [pre] var n = 2 + foo?.N ?? 1; [/pre] 上面代码的 foo 就是空的,那么 n 是多少?是 1 还是 2 还是 3 还是空? 想要了解这道题的推导过程请看C# 高级面试题 里面写了很多老司机都不一定能解出
回帖
  • 消灭零回复