惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

博客园 - z5337

【转】禁用 Chrome 浏览器的自动更新 【转】Avalonia 12 最小信创项目模板 【转】Avalonia 周边介绍 【转】国产操作系统对 Avalonia 的支持情况 【转】国产操作系统优化篇 [openKylin] 入门知识点 【转】国产操作系统优化篇 [openKylin] 第一步 - Qt + VMware 【转】p2055dn 打印机配置 IP 地址 【转】Windows 锁屏后屏幕不熄灭排查 【转】既然 java 8 因为组件容易被攻击,.net core 也有大量第三方组件,是不是也容易出问题 【转】最小 web api 学习 【转】使用记事本区分图片格式 【转】蓝牙耳机的播放控制 【转】JoyToKey 键位映射 【转】[C#] 要从接口取时间,单个订单查询和批量查询,写一个接口还是两个接口合适? 【转】[C#] Web API 中的常见层次 【转】[C#] .net core 项目的目标框架设置 【转】[C#] 项目里的配置文件与选项对比 【转】[.net core] 项目的 Windows 服务器部署 【转】《三字经》全文 【转】[IDEA] 调试时怎么判断使用哪个配置文件 【转】PO、DO、VO、BO、DTO、DAO、POJO 的区别 【转】[web]怎么移除网页最上层的水印 【转】[C#] 30+个.NET开发最佳实践 【转】[C#] WPF 保留选中的高亮色 【转】Windows Server 系统的桌面上显示 此电脑 图标 【转】[C#] 参数前加 in 的作用 【转】[C#] Enum 的 Flags 特性 【转】[C#] Tuples 元组介绍 【转】[C#] Record 的使用 【转】[C#] 预处理指令
【转】[C#] GlobalUsing 的使用
z5337 · 2025-10-17 · via 博客园 - z5337

转自:豆包ai

在 C# 10 及以上版本中,Global Using 指令(全局 using 指令)是一项简化代码的新特性,允许在项目级别定义全局生效的 using 语句,无需在每个代码文件中重复声明。这能显著减少重复代码,使文件更简洁。

传统上,每个 .cs 文件如需使用某个命名空间(如 SystemSystem.Collections.Generic),都需要在文件顶部添加 using 指令。而 Global Using 允许在单个文件中声明一次,让该命名空间在整个项目的所有代码文件中生效。

在任意 .cs 文件中(通常建议单独创建一个 GlobalUsings.cs 集中管理),用 global 关键字修饰 using 语句:

// GlobalUsings.cs(文件名可自定义)
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using Microsoft.AspNetCore.Mvc;

之后,项目中所有 .cs 文件无需再写 using System; 等,可直接使用这些命名空间下的类型(如 List<T>ControllerBase)。

某些项目模板(如 ASP.NET Core Web API、Console App)会自动生成隐式的全局 using,无需手动声明。例如:

  • ASP.NET Core 项目默认包含 global using Microsoft.AspNetCore.Builder;global using Microsoft.AspNetCore.Http; 等,简化 Web 开发常用命名空间。
  • 这些隐式全局 using 由项目文件(.csproj)中的 <ImplicitUsings>enable</ImplicitUsings> 控制(默认启用)。
  1. 作用范围:仅对当前项目有效,不影响引用的其他项目或类库。
  2. 文件位置:全局 using 可写在任意 .cs 文件中,但建议集中放在 GlobalUsings.cs 中,便于维护。
  3. 与普通 using 的关系:全局 using 不会替代文件内的 using,文件内的 using 仍可补充或覆盖全局设置(如 using static 或别名)。
  4. 禁用隐式全局 Using:若不需要模板自动生成的全局 using,可在 .csproj 中关闭:
    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>disable</ImplicitUsings> 
  5. 命名冲突:若全局 using 的命名空间存在类型冲突,仍需在文件内通过显式命名空间(如 System.Text.Json.JsonSerializer)或 using 别名解决。
  • 减少重复代码:避免在每个文件顶部重复声明常用命名空间(如 SystemSystem.Linq)。
  • 统一管理:集中维护项目级别的命名空间引用,便于团队规范。
  • 简化新人上手成本:无需记忆或手动添加大量基础 using 指令。
  • 项目中频繁使用的命名空间(如 SystemSystem.Collections.Generic)。
  • 框架 / 库特有的常用命名空间(如 ASP.NET Core 的 Microsoft.AspNetCore.Mvc、Entity Framework Core 的 Microsoft.EntityFrameworkCore)。

总结:Global Using 是 C# 10+ 中提升开发效率的实用特性,通过全局声明减少重复代码,尤其适合中大型项目或框架开发场景。


 转自:https://furion.net/docs/globalusing

推荐大家在 Visual Studio 中安装 CodeMaid 插件(注意 2019 和 2022 版本),自动清理解决方案所有无用的 using,结合 GlobalUsings.cs 非常棒!