前言

global using 指令在 C# 10 中被引入,意味着 using 将应用于编译中的所有文件(通常是一个项目)。

比如:

global using System.Text;

则在同一项目的其他位置,可以直接使用 System.Text 下的所有类型而无需再次声明 using

另外,可以创建using 别名指令,以便更易于将标识符限定为命名空间或类型。

比如:

using dt = System.DateTime;

则可以直接使用 dt.Now 来代替 System.DateTime.Now

并且,上述 2 个指令可以结合在一起使用:

global using dt = System.DateTime;

使用别名要小心,如果别名是一个已使用的名称,则容易造成错误:

global using DateTime = System.Text.Encoding;

但是,反过来想:

如果上面的 Encoding 包含了 Now 的定义,是不是就可以替换掉现有的 DateTime.Now 实现呢?

Demo

新建一个 .cs 文件,在顶部使用 global using 设置 DateTime 为别名:

global using DateTime = ConsoleApp1.MyIODateTime;

MyIODateTime 中同样实现 Now 属性:

public static class MyIODateTime
{public static System.DateTime Now { get {Console.WriteLine("Call from MyIODateTime");return new System.DateTime(2022, 1, 1); } }
}

在 ConsoleApp1 中执行 Console.WriteLine(DateTime.Now);,可以发现 DateTime.Now 确实被替换了:

结论

这个另类用法可以用于,代码中已经使用了大量某个第三方类库,但是需要进行紧急替换的场景。

如果你有关于global using更好的想法,欢迎到我的公众号"My IO"留言讨论

global using 的另类用法相关推荐

  1. 写在Github被微软收购之际 - Github的那些另类用法

    这几天朋友圈被微软75亿美元收购Github的新闻刷屏了.Jerry也来贡献一篇和Github相关的文章. 这篇文章包含了Jerry平时对于Github的一些另类用法.目录如下: 1. 部署HTML应 ...

  2. android另类工具,[置顶] android应用程序开发另解及Android SDK工具集的另类用法

    转载请注明出处: LouisWang http://blog.csdn.net/louiswangbing/article/details/6606865 相信对于广大Android应用开发爱好者来说 ...

  3. php 类中调用另类,PHP return语句另类用法不止是在函数中,return语句_PHP教程

    PHP return语句另类用法不止是在函数中,return语句 分享下PHP return语句的另一个作用,在bbPress的代码中看到的一个奇葩使用方法. 一直以为,return只能出现在函数中, ...

  4. 数据结构与算法--查找与排序另类用法-旋转数组中的最小数字

    查找与排序 查找 查找与排序都在程序设计中常被用到的算法.查找相对而言简单,一般都是顺序查找,二分查找,哈希表查找,和二叉排序树查找.其中二分查找是我必须熟悉的一种. 哈希表和二叉排序树主要点在于他的 ...

  5. python中global和def_Python中 Global和Nonlocal的用法详解

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当 ...

  6. ati能备份linux格式吗,ATI备份TIB文件的另类用法

    ATI备份TIB文件的另类用法 发布时间:2015-03-02  作者:Win10 64位官网  来源:http://www.win1064.com Acronis True Image 2013(以 ...

  7. docker in docker (dind)、all in one (aino),关于docker和Linux的一些另类用法

    docker in docker (dind).all in one (aino),关于docker和Linux的一些另类用法.以为 docker in docker 只会在Jenkins等其他场景中 ...

  8. 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结...

    03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...

  9. JAVA另类_java stream的几种另类用法

    除了用于简化对List, Set, Map等集合类型的操作外,java stream其实还可以抽象很多其他数据类型,然后在这一抽象的基础上做一些非常规操作.这些另类操作用好了,有时可以极大简化你的代码 ...

最新文章

  1. 教你搭建多变量时间序列预测模型LSTM(附代码、数据集)
  2. Visual C# 编程操作Excel
  3. 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】
  4. linux和windows启动,Linux和Windows双系统的启动
  5. Spark和机器学习整合
  6. 从网络访问计算机不能添加用户名,windows7 和 XP 能互相用\\ip访问,但是不能通过计算机名访问...
  7. helm安装_如何利用 Helm 在 Kubernetes 上快速部署 Jenkins
  8. 类型的设计--类型和成员基础(二)
  9. 使用SQLite数据库存储数据(2)-向表中插入记录
  10. “非IE内核浏览器”第一阶段开发计划发布
  11. 图像处理六:预处理方法
  12. 车牌的归属地(省份和地级市) js
  13. 计算机网络自顶向下方法 第六章 复习题答案
  14. 联想如何打开计算机配置,联想电脑如何进入BIOS以及设置启动菜单
  15. 将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)
  16. 为什么面试要问hashmap 的原理
  17. js三座大山——原型及原型链
  18. oracle表如何做统计分析,Oracle表统计信息的分析
  19. 了解你的windows目录和系统文件(转)
  20. 加拿大自动垃圾分类助手走进校园【智能行业快讯 2019.7.26】

热门文章

  1. 从零开始学R(十)——基本统计:线性回归模型(LRM)
  2. LVS简介及LVS-NAT负载均衡群集的搭建(要像记得回家的路一样记得理想和远方)
  3. 不用羡慕别人 上海桂伦说:选择倍加福安全栅你就是赢家!
  4. react项目通过iframe方式引入html页面
  5. 【嵌入式系统课程设计——纸张计数显示装置设计】
  6. java 二维码与海报合成图片并上传至七牛云
  7. 大型物流运输管理系统源码 TMS源码
  8. 游戏策划学习:moba
  9. 安卓手机APP压力monkey测试
  10. 外嫁女能否享受村民拆迁补偿待遇