global using 的另类用法

前言

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;

8926294af99a6cfb99731783859b15fb.png

但是,反过来想:

如果上面的 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 确实被替换了:

d92e9228e2fcb72d0fef2ac00c1521c1.jpeg

结论

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

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

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

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

相关文章

boost asio resolver

asio 中的resolver一般用于将host等信息转化为socket信息,类似于getaddrinfo() 以下代码 boost::asio::io_service io;tcp::resolver resolver(io);tcp::resolver::query query(boost::asio::ip::host_name(), "80");tcp::resolver::iterator endpoint_it…

利用 Node.js 实现 SAP Hana 数据库编程接口

为什么80%的码农都做不了架构师?>>> 自 SAP HANA SP 11 之后,可以使用 Node.js 作为 Hana 的编程接口。SAP 将 Application server 简称为 XS。现在 XS 已经演化为 Advanced 版本。为了区别,早期的 XS 被称为 XS Classical。 从下…

WPF 实现自绘验证码

WPF 实现自绘验证码控件名:VerifyCode作者:WPFDevelopersOrg原文链接: https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40;Visual Studio 2022;项目使用 MIT 开源许可协议;如何通过DrawingV…

css中的单位换算_CSS单位px、em、rem及它们之间的换算关系

作者:WangMin格言:努力做好自己喜欢的每一件事国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者的区别与优势是什么?接下来我们就来学习一下吧!单位px、em、rem分别表示什么?1、 px(Pixel) 相对于显示…

IIS上部署Net.Core

部署: 1、安装vc_redist.x64vc_redist.x64 2、安装DotNetCore.1.0.0.RC2-WindowsHosting 3、安装DotNetCore.1.0.0-SDK.Preview2-x64 4、控制台命令执行:dotnet -version,确认是否执行成功。成功则Net.Core安装完成 5、发布参考:IIS上部署Net…

【MAC】Ncnn 编译so文件方案

【MAC】Ncnn 编译so文件方案 1、下载ncnn github地址是:https://github.com/Tencent/ncnn 指定目录:在终端或者git管理工具 输入:git clone https://github.com/Tencent/ncnn.git 2、编译Ncnn 2.1 Mac平台 安装cmake、wget(根据实…

SSM学习注意杂记

2019独角兽企业重金招聘Python工程师标准>>> 1.spring导包时一定要版本对应,最好不要导不同版本的包,还有mybatis的包,springmvc的包,三个框架的包都需配套,要不然会出现一些想象不到的错误。 2.mybatis写映…

《ASP.NET Core 6框架揭秘》实例演示[15]:针对控制台的日志输出

针对控制台的ILogger实现类型为ConsoleLogger,对应的ILoggerProvider实现类型为ConsoleLoggerProvider,这两个类型都定义在 NuGet包“Microsoft.Extensions.Logging.Console”中。ConsoleLogger要将一条日志输出到控制台上,首选要解决的是格式…

基于mysql数据库的应用_MySQL数据库应用

参考资料:准备软件:mysql-5.5.13-win32.msi、MySQL安装图解.doc、Navicat_for_MySQL_10.0.5.0_XiaZaiBa.exe、mysqldriver.jar、eclipseMySQL基本操作登陆:mysql -u 用户名 -p 密码显示数据库:show databases;使用数据库&#xff…

《HeadFirst Python》第一章学习笔记

对于Python初学者来说,舍得强烈推荐从《HeadFirst Python》开始读起,这本书当真做到了深入浅出,HeadFirst系列,本身亦是品质的保证。这本书舍得已在《Python起步:写给零编程基础的童鞋》一文中提供了下载。为了方便大家…

Oracle-13:Oracle中的表分区

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客记录了表分区 表分区的含义: 典型的拿空间换时间的案例! 表分区对一张表进行分区,分区之后表中的数据存在相对应的分区内(可以是不…

js控制图像等比例缩放

<!DOCTYPE html> <html> <head><title>图片内部放大效果</title> <meta charset"utf-8"> <style type"text/css">#imgborder{ width: 200px;height: 160px;border: 3px solid #000; overflow: hidden;position:…

mysql一张表最多多少索引_MySQL一个索引最多有多少个列?真实的测试例子

MySQL一个索引最多有多少个列&#xff1f;真实的测试例子更新时间&#xff1a;2009年07月01日 22:22:21 作者&#xff1a;MySQL一个索引最多有多少个列&#xff1f;下面是具体的实现代码。最多16列。create table test (f1 int,f2 int,f3 int,f4 int,f5 int,f6 int,f7 int,f8…

.NET Core 使用 LibreOffice 实现 Office 预览(Docker 部署)

前些年做云盘产品的时候&#xff0c;一个很核心的功能就是 Office 文件预览&#xff0c;当时还没有使用 .NET Core ,程序部署在 Windows Server 服务器上&#xff0c;文件预览的方案采用了微软的 OWA 。目前在做的零代码产品中的表单附件控件&#xff0c;同样面临着 Office 文件…

es6(五):函数的扩展

函数参数的默认值 function log(x, y World) {console.log(x, y); }log(Hello) // Hello World log(Hello, China) // Hello China log(Hello, ) // Hellofunction Point(x 0, y 0) {this.x x;this.y y; }var p new Point(); p // { x: 0, y: 0 }函数length 的属性 指定了…

tomcat启动报错:Bean name 'XXX' is already used in this beans element

如题&#xff0c;tomcat容器启动时加载spring的bean&#xff0c;结果报错如下&#xff1a; 六月 28, 2017 9:02:25 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to…

[开源精品] C#.NET im 聊天通讯架构设计 -- FreeIM 支持集群、职责分明、高性能

&#x1f4bb; FreeIM 是什么&#xff1f;FreeIM 使用 websocket 协议实现简易、高性能&#xff08;单机支持5万连接&#xff09;、集群即时通讯组件&#xff0c;支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能。 ImCore 已正式改名为 FreeIM。使用场景&#xff…

用websploit获取管理员后台地址

1, use web/dir_scanner 2, set TARGET http://www.****.com 3, run SOURCE: https://sourceforge.net/projects/websploit/ WebSploit Advanced MITM Framework[]Autopwn – Used From Metasploit For Scan and Exploit Target Service[]wmap – Scan,Crawler Target Used Fro…

mysql事务操作_mysql的事务操作

倒着思考。杜绝纯粹的知识填鸭教育少废话&#xff0c;是上代码&#xff1a;update table1 set money-100 where id1; //A账户减少100元update table2 set money100 where id2; //B 账户增加100元问题&#xff1a;这是一个简单的银行转账案例sql&#xff0c;由于服务器等未知原因…

《ASP.NET Core 6框架揭秘》实例演示[16]:内存缓存与分布式缓存的使用

.NET提供了两个独立的缓存框架&#xff0c;一个是针对本地内存的缓存&#xff0c;另一个是针对分布式存储的缓存。前者可以在不经过序列化的情况下直接将对象存储在应用程序进程的内存中&#xff0c;后者则需要将对象序列化成字节数组并存储到一个独立的“中心数据库”。对于分…