前言

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. 2020年,那些「引爆」了机器学习社区的热门论文、库和基准
  2. 【转】POJ 1177 Picture(1)
  3. 给Visual Studio 2010中文版添加Windows Phone 7模板
  4. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?
  5. goland创建一个不限长度的字节切片_Go语言入门必知教程-切片
  6. java for 死循环_简单的java死循环 java中的死循环问题
  7. 《新冠肺炎防治手册》来了!阿里巴巴联合“抗疫”一线专家发布
  8. React开发(125):ant design学习指南之form中的hasFeedback
  9. A-Z排序控件的实现
  10. 一幅GAN网络创造的肖像图卖了40万美金,但那又怎样?
  11. 深度学习笔记(42) 人脸识别
  12. (4)verilog语言编写计数器
  13. 常用制图工具Visio-ProcessOn
  14. android GPS驱动
  15. LAMP架构部署论坛
  16. AtCoder Beginner Contest 160 A ~ E
  17. 99,36岁老码农现身说法
  18. LiLeiHanMeiMei的隐式马尔可夫爱情
  19. rsync+crontab实现定时备份
  20. 【1】数据可视化:基于 Echarts + Python 实现的动态实时大屏 - 互联网企业数据

热门文章

  1. Linux上传文件时文件名自动加引号问题
  2. MOBA电竞游戏:Zuki Moba
  3. PyAutocad 通过AcDbBlockReference 获得有效块名称
  4. 学习记录:一步一个脚印
  5. 一键重装系统工具哪个好?人人都会用的一键重装软件
  6. linux能做备份么,Linux能不能备份?
  7. 一款动态樱花背景HTML个人单页
  8. android蹒跚学步
  9. IP Spoof技术介绍
  10. python3.8.2numpy版本,如何查看安装python和numpy的版本,numpy版本的选择,命令行下查看pyth...