You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

除using指令外,哪些代码允许置于命名空间外部?

命名空间外部允许的代码元素

除了using指令外,C#里还有以下几种代码可以放在命名空间体的外部:

  • 程序集特性:像[assembly: AssemblyVersion("1.0.0.0")]、[assembly: AssemblyDescription("My Application")]这类直接作用于整个程序集的特性,必须定义在命名空间之外,用来标记程序集的元数据信息。
  • extern别名指令:当你引用的多个程序集存在同名类型时,可以用extern alias OldLib;这样的指令来区分不同程序集的类型,这类指令必须放在命名空间外部,甚至要在普通using指令之前。
  • 顶级命名空间声明:我们平时写的namespace MyApp.Services { ... }本身就是顶级元素,整个命名空间的定义就是在命名空间外部的,这是最基础的场景。
  • 顶级类型定义:C#允许直接在命名空间外部定义类、结构体、接口、枚举、委托等类型,比如直接写public class GlobalClass { ... },不过这种做法不推荐,因为类型会落入全局命名空间,很容易引发命名冲突。
  • 文件级命名空间(C# 10及以上):C# 10新增的简化写法namespace MyApp.Data;,直接放在文件顶部,属于命名空间外部的顶级声明,替代了传统的嵌套大括号写法。
  • 全局using指令(C# 10及以上):比如global using System.Collections.Generic;,这种using指令会作用于整个项目的所有文件,必须放在命名空间外部才能生效。

内容的提问来源于stack exchange,提问作者M14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:44:55